18 votes

Oracle CLOB ne peut pas insérer au-delà de 4000 caractères?

Comment insérer plus de 4000 caractères dans une colonne de type CLOB ?

--créer la table de test s
create table s
(
      a clob
);
insert into s values('>4000 char')

Résultat en erreur :

ORA-01704 : la chaîne est trop longue.

Je veux insérer une chaîne de caractères de plus de 4000 caractères une seule fois. Comment puis-je faire ? Est-ce possible ?

Lorsque je lis la référence Oracle, CLOB peut enregistrer jusqu'à 4 Go (gigaoctets) ?

21voto

gunn Points 261
  • diviser la longue chaîne de caractères en morceaux de 4000 caractères ou moins
  • créer des CLOB pour chaque morceau en utilisant la fonction to_clob()
  • concaténer les CLOB

Voici un exemple :

insert into  (colonne_clob)
  values
  (
      to_clob(' <=4000 caractères ')
    ||to_clob(' <=4000 caractères ')
    ||to_clob(' <=4000 caractères ')
    ...
    ||to_clob(' <=4000 caractères ')
  );

7voto

Raúl Juárez Points 2119

Le maximum pour une insertion unique est de 4000 caractères (la longueur maximale de chaîne littérale dans Oracle). Cependant, vous pouvez utiliser la fonction lob dbms_lob.append() pour ajouter des morceaux de (maximum) 4000 caractères au clob :

CREATE TABLE don (x clob);

DECLARE 
 l_clob clob;
BEGIN
  FOR i IN 1..10
  LOOP
    INSERT INTO don (x) VALUES (empty_clob()) --Insérer un "clob vide" (ne pas insérer null)
    RETURNING x INTO l_clob;

    -- Maintenant, nous pouvons ajouter du contenu au clob (créer un clob de 400,000 octets)
    FOR i IN 1..100
    LOOP
      dbms_lob.append(l_clob, rpad ('*',4000,'*'));
      --dbms_lob.append(l_clob, 'morceau de chaîne à insérer (maximum 4000 caractères à la fois)');
    END LOOP;
  END LOOP;
END;

-3voto

masterxilo Points 134

Utilisez une colonne clob et utilisez sqlldr pour importer les données à partir d'un fichier csv.

sqldeveloper peut générer le script de contrôle .ctl nécessaire pour vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X