Comment lire les fichiers en lignes existantes colonnes LOB dans Oracle?
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.
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;
/