用于在sql开发人员中插入的假脱机不工作

时间:2017-08-16 16:17:33

标签: sql oracle file insert 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 

该文件已创建。但是当我查看文件时,我得到的结果不是插入语句的形式,因为我想再次运行此insert语句。

下面是数据看起来像在文件中看起来格式不正确: enter image description here

3 个答案:

答案 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

enter image description here