用于插入 sql 开发人员的假脱机无法正常工作
spool for insert in sql developer not working
我有下面的 select 查询,我想为此查询的结果创建插入脚本并将其保存在文件中。我用过spool.
set long 10000
set lines 100000
set sqlformat insert
spool c:\temp\Insert_TEST_GRP.sql
select ID,NAME,TEST_DATE from TEST_GRP sd
where TEST_DATE =
( select min(TEST_DATE)
from TEST_GRP sd2
where sd.ID = sd2.ID
)
and sd.TEST_DATE <> TO_DATE ('01.01.2000', 'dd.mm.yyyy');
spool off
文件已创建。但是当我查看文件时,我得到的结果不是插入语句的形式,因为我想再次 运行 此插入语句。
下面的数据在格式不正确的文件中看起来如何:
您需要 return 一个字符串,它是用您需要的列格式化的 INSERT 语句。例子
set long 10000
set lines 100000
set sqlformat insert
spool c:\temp\Insert_TEST_GRP.sql
select 'INSERT INTO TEST_GRP (ID,NAME,TEST_DATE) VALUES (' ||
ID||','||NAME||',' || TEST_DATE||');'
from TEST_GRP sd
where TEST_DATE =
( select min(TEST_DATE)
from TEST_GRP sd2
where sd.ID = sd2.ID
)
and sd.TEST_DATE <> TO_DATE ('01.01.2000', 'dd.mm.yyyy');
spool off
如果您使用的是 sqldeveloper,那么您可以只使用内置的导出功能并将结果网格导出为插入。
我们无权访问您的 table 或您的数据。
但这里它使用的是演示模式 HR 及其 EMPLOYEES table
set sqlformat insert
spool c:\users\jdsmith\desktop\SO_inserts.sql
select * from employees;
spool off
您正在使用 SET LONG - 您的 table 中有 LOBS 吗?
另外,我注意到你在 OTN Forums...
上问过同样的问题
用于格式化查询结果的 set sqlformat
方法 was added in version 4.1。
如果您使用的是早期版本(例如您在评论中所说的 3.0),那么它会抱怨,您似乎忽略了这一点;例如在 4.0 中:
set sqlformat insert
在脚本输出中得到这个 window:
line 1: SQLPLUS Command Skipped: set sqlformat insert
/*insert*/
方法早于此可用:
select /*insert*/ * from dual;
得到
REM INSERTING into dual
SET DEFINE OFF;
Insert into "dual" (DUMMY) values ('X');
(当然,不要真正尝试插入 dual
)。也可以使用导出向导(工具->数据库导出);或 运行 使用 control-enter 的查询,右键单击输出网格并选择 'export'(尽管 it may repeat the query)。
升级到当前版本是明智的做法。
我使用了 SQL 开发人员。确保单击 运行 脚本 (F5) 而不是 运行 语句。
对于示例文件中的多语句,请在语句之间使用 "/"。
SET FEEDBACK OFF
set sqlformat insert
spool C:\Necessary_file\Reqular_task\QDE\profile_const.sql
select * from export_profile where profile_name='SPS_DIAG';
/
select * from profile_const where profile_name='SPS_DIAG';
/
select * from profile_panel where profile_name='SPS_DIAG' order by 5
/
spool off
我有下面的 select 查询,我想为此查询的结果创建插入脚本并将其保存在文件中。我用过spool.
set long 10000
set lines 100000
set sqlformat insert
spool c:\temp\Insert_TEST_GRP.sql
select ID,NAME,TEST_DATE from TEST_GRP sd
where TEST_DATE =
( select min(TEST_DATE)
from TEST_GRP sd2
where sd.ID = sd2.ID
)
and sd.TEST_DATE <> TO_DATE ('01.01.2000', 'dd.mm.yyyy');
spool off
文件已创建。但是当我查看文件时,我得到的结果不是插入语句的形式,因为我想再次 运行 此插入语句。
下面的数据在格式不正确的文件中看起来如何:
您需要 return 一个字符串,它是用您需要的列格式化的 INSERT 语句。例子
set long 10000
set lines 100000
set sqlformat insert
spool c:\temp\Insert_TEST_GRP.sql
select 'INSERT INTO TEST_GRP (ID,NAME,TEST_DATE) VALUES (' ||
ID||','||NAME||',' || TEST_DATE||');'
from TEST_GRP sd
where TEST_DATE =
( select min(TEST_DATE)
from TEST_GRP sd2
where sd.ID = sd2.ID
)
and sd.TEST_DATE <> TO_DATE ('01.01.2000', 'dd.mm.yyyy');
spool off
如果您使用的是 sqldeveloper,那么您可以只使用内置的导出功能并将结果网格导出为插入。
我们无权访问您的 table 或您的数据。
但这里它使用的是演示模式 HR 及其 EMPLOYEES table
set sqlformat insert
spool c:\users\jdsmith\desktop\SO_inserts.sql
select * from employees;
spool off
您正在使用 SET LONG - 您的 table 中有 LOBS 吗?
另外,我注意到你在 OTN Forums...
上问过同样的问题用于格式化查询结果的 set sqlformat
方法 was added in version 4.1。
如果您使用的是早期版本(例如您在评论中所说的 3.0),那么它会抱怨,您似乎忽略了这一点;例如在 4.0 中:
set sqlformat insert
在脚本输出中得到这个 window:
line 1: SQLPLUS Command Skipped: set sqlformat insert
/*insert*/
方法早于此可用:
select /*insert*/ * from dual;
得到
REM INSERTING into dual
SET DEFINE OFF;
Insert into "dual" (DUMMY) values ('X');
(当然,不要真正尝试插入 dual
)。也可以使用导出向导(工具->数据库导出);或 运行 使用 control-enter 的查询,右键单击输出网格并选择 'export'(尽管 it may repeat the query)。
升级到当前版本是明智的做法。
我使用了 SQL 开发人员。确保单击 运行 脚本 (F5) 而不是 运行 语句。
对于示例文件中的多语句,请在语句之间使用 "/"。
SET FEEDBACK OFF
set sqlformat insert
spool C:\Necessary_file\Reqular_task\QDE\profile_const.sql
select * from export_profile where profile_name='SPS_DIAG';
/
select * from profile_const where profile_name='SPS_DIAG';
/
select * from profile_panel where profile_name='SPS_DIAG' order by 5
/
spool off