2016-07-26 107 views
0

我正在尋找一種解決方案來爲select語句結果集使用PL/SQL腳本創建SQL INSERT語句。尋找SQL Developer工具中可用的類似功能(導出 - >格式插入),但我希望解決方案作爲腳本而不是使用任何工具。Oracle:將select語句結果集導出爲INSERT SQL與SQL開發人員導出的語句類似

我提到了下面的解決方案。但是,我想知道作爲解決方案的更好方法是否過時並不是很簡單。

EXPORT AS INSERT STATEMENTS: But in SQL Plus the line overrides 2500 characters!

回答

0

我才發現我的問題使用Oracle提示一個簡單的解決方案( 「插入」)。這也會自動處理數據類型。我的表只有字符串和數字數據類型,所以它對我來說工作正常。我還沒有測試其他數據類型的解決方案。但是,我希望它也適用於其他數據類型。

set linesize 2000 
set pagesize 10 
spool "c:\myoutput.txt"; 
select /*insert*/ * from SAMPLE_TABLE; 
spool off; 
+0

該工作的工具是什麼? –

0

不是真的PL/SQL,但基本的SQL可以處理這樣簡單的要求:

set linesize 2000 
set pagesize 0 
spool c:\myoutput.txt 
select 'INSERT INTO SAMPLE_TABLE VALUES ('''|| 
    C01||''','||C02||','||C03||','||C04||','''||C05||''','''|| 
    C06||''','''||C07||''','||C08||','||C09||','''||C10||''','''|| 
    C10||''','''||C11||''','''||C12||''','''||C13||''','''||C14||''','''|| 
    C15||''','''||C16||''');' 
from sample_table; 
spool off 

注:這是通過使用從URL您在您的文章中引用的表例子。在URL中的例子,C02,C03,C04,C08,C09和全數字,其餘的都是CHAR或VARCHAR2

+0

謝謝!實際上,腳本不考慮數據類型。 – notionquest

+0

我不明白你的意思。你需要考慮數據類型嗎?假設源表和目標表中的DDL都相同,那麼數據類型不應該成爲問題,因爲表的源副本中的所有字段已經滿足必要的約束。我可能完全讀錯了,請原諒我,如果是這樣的話! – fleetmack

+0

示例:如果列中的字符串值包含空格,則插入腳本不會用單引號引起來。 – notionquest

2

像你說的腳本...

使用SQLcl - 這是一個命令 - SQL Developer的在線界面。

您可以創建一個.bat或.sh腳本來啓動SQLcl,運行您的查詢,將其假脫機至文件,無需編寫任何代碼。

set pagesize... 
set head... 
set feedback... 
spool... 

set sqlformat insert 
select * from sample_table; 
spool off 
exit 

uses the same code as SQL Developer to generate the INSERTs, only avail from a CLI/script