Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据查询请求生成Oracle SQL文件_Sql_Oracle_Export - Fatal编程技术网

根据查询请求生成Oracle SQL文件

根据查询请求生成Oracle SQL文件,sql,oracle,export,Sql,Oracle,Export,我正在使用一个shell脚本调用OracleSQLPlus,并希望将查询结果导出到一个sql文件 这个请求给了我很多价值观: SELECT * FROM CUST_TABLE WHERE CUST_CITY = 'San Fran'; 我希望我的脚本生成如下sql文件: evariste@Unix-Server$cat first_query_result.sql INSERT INTO CUST_TABLE (COLUMN_1, COLUMN_2, ....) VALUES (CUST1

我正在使用一个shell脚本调用OracleSQLPlus,并希望将查询结果导出到一个sql文件

这个请求给了我很多价值观:

SELECT * FROM CUST_TABLE WHERE  CUST_CITY = 'San Fran';
我希望我的脚本生成如下sql文件:

evariste@Unix-Server$cat first_query_result.sql

INSERT INTO CUST_TABLE (COLUMN_1, COLUMN_2, ....)
VALUES (CUST1_COLUMN_1, CUST1_COLUMN_2, ...);
INSERT INTO CUST_TABLE (COLUMN_1, COLUMN_2, ....)
VALUES (CUST2_COLUMN_1, CUST2_COLUMN_2, ...);
INSERT INTO CUST_TABLE (COLUMN_1, COLUMN_2, ....)
VALUES (CUST3_COLUMN_1, CUST3_COLUMN_2, ...);

我对如何在脚本中执行Oracle和SQL有一点了解吗

大概是这样的:

sqlplus -silent uid/pw@db <<+EOF
set heading off
set feedback off
set pagesize 0
set linesize 32000
set trimspool on
set termout off
set echo off
set verify off
set sqlblanklines off
spool somefile.sql
WITH cust_table AS 
(SELECT 1 id, 'San Francisco' city, 'C1V1' col1, 'C2V1' col2 FROM dual
 UNION ALL SELECT 2, 'Los Angeles', 'C1V2', 'C2V2' FROM dual
 UNION ALL SELECT 3, 'San Jose', 'C1V3', 'C2V3' FROM dual
 UNION ALL SELECT 4, 'San Francisco', 'C1V4', 'C2V4' FROM dual)
SELECT 'INSERT INTO cust_table (id, city, col1, col2)'||CHR(10)||'VALUES ('||
       id||','''||city||''','''||col1||''','''||col2||''');'
  FROM cust_table
 WHERE city = 'San Francisco';
quit;
+EOF

谢谢,但我不明白为什么所有这些联合?,我想要更通用的东西,所以我不需要在我的代码中转储所有列的名称,这就是为什么我在我的问题中使用select*,所以我想转储表中的所有列。当我想运行我的脚本:ORA-00904:col6:invalid identificate时,我也遇到了这个错误。这只是一个示例—一种向SELECT语句提供少量输入以显示其工作的方法。在你的真实剧本中,你会忽略这一部分。col6是从哪里来的?您是否修改了我在回答中的脚本以适合您的实际表格?我发布的示例很有用。取出WITH子句,在SELECT中更改/添加列名以匹配实际表。我使用以下方法:将客户作为SELECT用户名,从双选择“插入客户用户名,城市”| CHR10 | | | |“值”|用户名| |',“|城市| |”来自用户名为“Julie”的客户;将示例中的WITH子句和前两行一起取出,然后再试一次。阅读WITH子句aka,subquery factoring here:Got this error:ORA-00933:SQL命令未正确结束需要在| | username | | |周围加引号,即。。。值“| |用户名| |”、“| |城市| |”@LukeWoodward:谢谢,但仍然有这个错误:ORA-00933:SQL命令没有正确结束
INSERT INTO cust_table (id, city, col1, col2)
VALUES (1,'San Francisco','C1V1','C2V1');
INSERT INTO cust_table (id, city, col1, col2)
VALUES (4,'San Francisco','C1V4','C2V4');