0

ギガバイトサイズのpostgresqlダンプファイルをバッチトランザクションコミットファイルに変換するためのツール/スクリプトを探しています。

次のように、ダンプファイルにトランザクションをBEGIN挿入する必要があります。COMMIT

BEGIN;
CREATE...;
INSERT...;
INSERT...;
INSERT...;
...
COMMIT; 
BEGIN;
CREATE...;
INSERT...;
INSERT...;
INSERT...;
....

はい。挿入ステートメントよりも優れているものは何でもあります。問題は、データがギガバイトの挿入ステートメントで構成されており、配信パートナーが別のダンプ形式を送信するために到達できないことです。

インポートを変換/加速するためのツールを知っていますか?

4

2 に答える 2

1

COPYコマンド、 の\copyメタコマンドpsql、またはpg_bulkloadユーティリティの使用を検討する必要があります。これらのいずれも、表示する Ruby スクリプトよりも大幅に高速である必要があり、データ内の改行やその他の奇妙な文字を正しく処理するために十分にテストされています。

于 2012-08-07T16:21:42.253 に答える
0

ツールが見つからなかったため、作業を行うための独自のスクリプトを作成しました。

#!/usr/bin/ruby
i=0
File.open(ARGV[1],"a"){|t|
    File.open(ARGV[0]){|f|                                                                                        
    a=[]
    while(l=f.gets(";"))                                                                               
      if(a.length==80)
          i+=1
          puts "i: #{i}" if(i%1000==0)
          t.write("BEGIN;\n#{a.join(" ")}\nCOMMIT;\n")
          a=[]
      else
        a<<l
      end
    end
    t.write("BEGIN;\n#{a.join(" ")}\nCOMMIT;\n")
      }
  }

使用法:ruby batchtransact.rb input.sql output.sql

于 2012-08-07T15:47:38.280 に答える