2012-03-29 3 views
0

可能性の重複:
Bulk Insert of hundreds of millions of recordsアスキー/外部ファイル用にINSERT INTOを使用していますか?

ためにINSERT INTOを使用することが可能であったのであれば、私はちょうど思っていた、既に作成されますテーブルにとして700K行外部ASCIIファイルを言いますその中の既存のデータ? Alの値は同じですが、私の同僚がCOPYの代わりにそのコマンドを使用するように指示しただけです。このコメントは間違っていますか?

ありがとうございます。

PS:あなたのファイルはよく似フォーマットされている場合、私はIII

+0

COPYについてよくわかりませんが、プログラムでこれを行うほうが簡単かもしれないと思っています。 また、フィールドの種類には注意が必要です。私はPostgreの知識はありませんが、データサイズ制限のために動作しなかったTEXTカラムにメガバイトのデータを保存しようとしていた私は以前から問題を抱えていました。 – ControlAltDel

+2

可能であれば、ファイルを編集して 'SQL'スクリプトファイルにすることが可能なら、可能です。なぜあなたは 'コピー'を使用する代わりにそれをやっていますか? –

答えて

1

ます。また、海外のデータラッパを使用してテーブルとしてテキストファイルをマップすることができます。

http://www.postgresql.org/docs/current/static/file-fdw.html

二つの例:

http://michael.otacoo.com/postgresql-2/postgresql-playing-with-foreign-data-wrappers-1/
http://www.depesz.com/2011/03/14/waiting-for-9-1-foreign-data-wrapper/

をあなたがマッピングされたらテキストファイルをテーブルに追加するには、

INSERT INTO target_table (col1, col2, col3) 
SELECT col1, col2, col3 
FROM fdw_table; 
+0

ありがとう!これは助けになった! –

0

技術PosgtreSQL/pgAdminでを使用しています:

(f1, f2, f3, f4), 

あなた単に先頭に追加できますの初めに

INSERT INTO tbs(f1, f2, f3, f4) VALUES 

ファイルは;ですべて終了し、1つのSQLコマンドとして実行してみてください。問題はPostgreSQLがこの長い文を解析することさえできるかどうかわからない700k行である。私のお金は、あなたが試してみることを歓迎しているということです。詳細については、this pageを参照してください。

あなたがCOPYを使用しないで曲がっている場合さて、私は次のことを行うと、単純なPerlやPythonのスクリプトの書き込みになります。

$sthがデータベースに対して調製 INSERT文です
while(<FILE>) 
{ 
    chomp; 
    @data_fields = split(/<delim>/, $_); 
    $sth->execute(@data_fields); 
} 

を。

関連する問題