我有以下选择查询,我想要创建此查询的结果插入脚本并将其保存在文件中。我用过线轴。
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
该文件已创建。但是当我查看文件时,我得到的结果不是插入语句的形式,因为我想再次运行此insert语句。
答案 0 :(得分:2)
格式化查询结果的Incomplete
方法was added in version 4.1。
如果您使用的是早期版本(例如3.0,就像您在评论中所说的那样),那么它会抱怨,您似乎忽略了这一点;例如在4.0中:
Date
01/01/2017
05/01/2017
06/01/2017
08/01/2017
在脚本输出窗口中获取此信息:
set sqlformat
早于set sqlformat insert
方法可用:
line 1: SQLPLUS Command Skipped: set sqlformat insert
得到
/*insert*/
(当然不要真正插入select /*insert*/ * from dual;
)。您还可以使用导出向导(tools-&gt; database export);或者使用control-enter运行查询,右键单击输出网格并选择“导出”(尽管it may repeat the query)。
升级到当前版本是明智之举。
答案 1 :(得分:1)
您需要返回一个字符串,该字符串是使用您需要的列格式化的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,那么您可以使用内置的导出功能并将结果网格导出为插入。
答案 2 :(得分:0)
我使用过SQL Developer。确保单击运行脚本(F5)而不是运行语句。
对于示例文件中的多语句,请在语句之间使用&#34; /&#34; 。
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