使用SQL Developer导出和插入包含SQL语句的CLOB数据

时间:2018-05-09 13:40:19

标签: sql oracle10g oracle-sqldeveloper

我有一个包含SQL代码的CLOB列的表。现在我想将开发人员数据库中的内容转移到高效的数据库中。我使用以下脚本导出开发表的内容:

set long 100000
set lines 1000
spool d:\export.sql
select /*insert*/* from myTable;
spool off

但是,由于SQL代码中的'字符,导入prod表无法正常工作。生成的insert语句如下所示:

insert into myTable (id, name, sql) 
values (1, 'John', 'select * /* this is a hint */ 
                    from table1 
                    where attr1 = 'hi,you' and attr2 = 'me, too')

如何插入此CLOB,或如何以更好的方式导出它?

1 个答案:

答案 0 :(得分:1)

如果可用,我会使用Data Pump。

如果没有,我会使用SQL * Loader。

你能做什么,是使用SQL Developer将你的表卸载到SQL * Loader设置,每个CLOB都会被写入一个文件,然后就可以加载它们,就像你所看到的一样。< / p>

我写了这个here来了解如何使用BLOBS进行此操作,但这是相同的过程。

enter image description here

输出将是将表移动到新系统,控制文件,数据流和所有LOBS所需的所有文件。

获得文件后,您需要确保安装了Oracle客户端,或拥有完整的Instant Client。

这将使您可以访问SQL * Loader。

enter image description here

这是一个命令行实用程序,没有GUI。它的工作方式与SQL * Plus非常相似。您需要确保设置了Oracle ENV,以便启动并连接。

但是

您需要的一切都在SQLDev为您整理的ZIP中,最大的部分是.ctl(控制文件)。

Docs

sqlldr scott CONTROL=ulcase1.ctl ulcase1.log

'scott'是数据库用户名,它会提示您输入密码。你将把ulcase1.ctl替换为你从SQLDev获得的ctl文件。日志位是可选的,但重要。

顺便说一句,这应该快速运行。

如果你在电脑上运行它,你的连接字符串将更像

sqlldr hr@server:port/service