Есть ли способ скопировать записи BLOB между базами данных в Oracle 10g?
У нас есть производственная таблица, в которой есть миллионы строк и содержит поле BLOB, я хотел бы скопировать меньший выбор этих записей в нашу базу данных разработки, не привлекая DBA, если это возможно. Я попробовал следующую команду копирования, но получил CPY-0012: Datatype cannot be copied
COPY FROM user/password@prod_db TO user/password@dev_db -
INSERT TABLE_A (COL1, COL2, COL3, BLOB_COL) USING -
SELECT COL1, COL2, COL3, BLOB_COL -
FROM TABLE_A WHERE COL1='KEY'
есть ли способ скопировать записи с полем BLOB между базами данных через SQL?
3 ответов
к сожалению вы не можете копировать BLOB
значений с помощью .
альтернативой является настройка ссылки DB на исходную базу данных и выполнение SQL INSERT
о себе:
CREATE DATABASE LINK link_to_prod CONNECT TO prod_user IDENTIFIED BY prod_password USING 'prod_db';
INSERT INTO TABLE_A@link_to_prod (COL1, COL2, COL3, BLOB_COL) SELECT COL1, COL2, COL3, BLOB_COL FROM TABLE_A
насос данных Oracle (запущен 10g+) поддерживает перемещение данных BLOB.
Я придумал решение, которое мне нравится-эта версия имеет ограничение 4000 символов на CLOB.
1) на копии в базу данных:
create TABLE_A_TMP as
select COL1, COL2, COL3, cast(BLOB_COL as varchar2(4000)) BLOB_COL
from TABLE_A
where 1=0;
2) затем запустите команду copy
COPY FROM user/password@prod_db TO user/password@dev_db -
INSERT TABLE_A_TMP (COL1, COL2, COL3, BLOB_COL) USING -
SELECT COL1, COL2, COL3, cast(BLOB_COL as varchar2(4000)) -
FROM TABLE_A WHERE COL1='KEY'
3) на копии в базу данных:
INSERT TABLE_A (COL1, COL2, COL3, BLOB_COL)
SELECT COL1, COL2, COL3, BLOB_COL
FROM TABLE_A_TMP
4) затем отбросьте таблицу tmp
Я боролась с этим ограничением, и это решение помогло мне много.