使用 SQL 开发人员导出和插入包含 SQL 语句的 CLOB 数据
Export and insert CLOB data containing SQL statements with SQL Developer
我有一个 table,其中 CLOB
列包含 SQL 代码。现在我想将内容从开发人员数据库转移到生产数据库中。我使用下面的脚本导出devtable:
的内容
set long 100000
set lines 1000
spool d:\export.sql
select /*insert*/* from myTable;
spool off
但是,由于 SQL 代码中的 '
个字符,无法导入产品 table。生成的插入语句如下所示:
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
,或者如何以更好的方式导出它?
如果可用,我会使用 Data Pump。
如果没有,我会使用 SQL*Loader。
你可以做的是使用 SQL Developer 将你的 table 卸载到 SQL*Loader 设置,每个 CLOB 将被写入一个文件,它们可以是然后加载 w/o 问题就像你看到的那样。
我写这篇 here 是为了说明如何使用 BLOBS 执行此操作,但过程相同。
输出将是将 table 移至新系统所需的所有文件、控制文件、数据流和所有 LOBS。
获得文件后,您需要确保安装了 Oracle 客户端,或者安装了完整的 Instant Client。
这将使您能够访问 SQL*Loader。
这是一个命令行实用程序,没有 GUI。它的工作原理与 SQL*Plus 非常相似。您需要确保您的 Oracle ENV 已设置,以便您可以启动它并进行连接。
但是
您需要的一切都在 SQLDev 为您整理的 ZIP 中,最大的部分是 .ctl(控制文件)。
sqlldr scott CONTROL=ulcase1.ctl ulcase1.log
'scott' 是数据库用户名,它会提示你输入密码。您将从 SQLDev 获得的 ctl 文件替换为 ulcase1.ctl。日志位是可选的,但很重要。
顺便说一句,这应该运行 FAST。
如果您运行在您的电脑上连接这个,您的连接字符串将更像
sqlldr hr@server:port/service
我有一个 table,其中 CLOB
列包含 SQL 代码。现在我想将内容从开发人员数据库转移到生产数据库中。我使用下面的脚本导出devtable:
set long 100000
set lines 1000
spool d:\export.sql
select /*insert*/* from myTable;
spool off
但是,由于 SQL 代码中的 '
个字符,无法导入产品 table。生成的插入语句如下所示:
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
,或者如何以更好的方式导出它?
如果可用,我会使用 Data Pump。
如果没有,我会使用 SQL*Loader。
你可以做的是使用 SQL Developer 将你的 table 卸载到 SQL*Loader 设置,每个 CLOB 将被写入一个文件,它们可以是然后加载 w/o 问题就像你看到的那样。
我写这篇 here 是为了说明如何使用 BLOBS 执行此操作,但过程相同。
输出将是将 table 移至新系统所需的所有文件、控制文件、数据流和所有 LOBS。
获得文件后,您需要确保安装了 Oracle 客户端,或者安装了完整的 Instant Client。
这将使您能够访问 SQL*Loader。
这是一个命令行实用程序,没有 GUI。它的工作原理与 SQL*Plus 非常相似。您需要确保您的 Oracle ENV 已设置,以便您可以启动它并进行连接。
但是
您需要的一切都在 SQLDev 为您整理的 ZIP 中,最大的部分是 .ctl(控制文件)。
sqlldr scott CONTROL=ulcase1.ctl ulcase1.log
'scott' 是数据库用户名,它会提示你输入密码。您将从 SQLDev 获得的 ctl 文件替换为 ulcase1.ctl。日志位是可选的,但很重要。
顺便说一句,这应该运行 FAST。
如果您运行在您的电脑上连接这个,您的连接字符串将更像
sqlldr hr@server:port/service