2016-07-26 10 views
0

select文の結果セットにPL/SQLスクリプトを使用してSQL INSERT文を作成するソリューションを探しています。 SQL Developerツール(export - > format insert)で使用できる同様の機能を探していますが、ツールを使用するのではなくスクリプトとしてソリューションを使用したいと考えています。Oracle:SELECT文の結果をSQLデベロッパのエクスポートと同様のINSERT 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からテーブルの例を使用しています。使用SQLcl URLの例では、C02、C03、C04、C08、およびC09全てNUMBER、残りはあなたが言うスクリプトとしてCHARまたはVARCHAR2

+0

ありがとうございました!実際には、スクリプトはデータ型を考慮しません。 – notionquest

+0

私はあなたが何を意味するのか不明です。データ型を考慮する必要がありますか?ソースとターゲットの両方でこのテーブルのDDLが同じであると仮定すると、テーブルのソースコピー内のすべてのフィールドがすでに必要な制約を満たしているため、データ型は問題にはなりません。私はこれを完全に間違って読んでいるかもしれません、もしそうなら、私を許してください! – fleetmack

+0

例:列の文字列値にスペースが含まれている場合、一重引用符で囲まれていないと挿入スクリプトは機能しません。 – notionquest

2

されている...

- それはコマンド - です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

関連する問題