Question

Je dois migrer des données d'une base de données à l'autre. Comme préparation, nous avons déjà extrait CLOB et BLOB dans des fichiers séparés situés sur le serveur Oracle. La base de données contient plusieurs colonnes CLOB et BLOB dans différentes tables qui ont été initialisés avec les valeurs NULL pour toutes les lignes.

Comment puis-je charger le contenu d'un fichier dans la colonne de CLOB ou BLOB d'une ligne existante. Je sais que les touples exactes des clés primaires d'identification et de fichiers ... mais je l'ai trouvé pas travail moyen de lire ces fichiers dans les tableaux.

SQL Loader par exemple ne semble pouvoir ajouter des lignes ou pour remplacer la table complète. Mais je veux seulement mettre à jour une seule colonne. Nous pouvons utiliser SQL Loader si nécessaire ou simples scripts PL / SQL -. Tout ce qui fonctionne

Merci pour votre aide.

Était-ce utile?

La solution

somehting le long des lignes suivantes devraient faire le travail. Vous voudriez paramétrez, et faire une version distincte pour les données BLOB. Je ne sais pas si vous avez des problèmes de caractère définies soit.

declare
    l_bfile   bfile := bfilename('DATA_PUMP_DIR','cpy.log');
    l_data    clob;
    l_soffset NUMBER := 1;
    l_doffset NUMBER := 1;
    l_lang    NUMBER := 0;
    l_warn    NUMBER;
begin
    DBMS_LOB.createtemporary (lob_loc => l_data,cache => TRUE, 
                                 dur => DBMS_LOB.call);
    dbms_lob.fileopen( l_bfile, DBMS_LOB.file_readonly );
    DBMS_LOB.loadclobfromfile(l_data, l_bfile, DBMS_LOB.LOBMAXSIZE, 
           l_soffset, l_doffset, 0, l_lang, l_warn  );
    dbms_lob.fileclose(l_bfile);
    update f_lob set value = l_data where id = 1;
end;
/
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top