私のデータベースからJSONという形式でデータをエクスポートしましたが、これは基本的には1つの[list]であり、そこに{objects}の束(900K)があります。95mbのJSONアレイを小さなチャンクに分割しますか?
私のプロダクションサーバーにインポートしようとしましたが、安価なWebサーバーがあります。彼らは10分すべてのリソースを食べると、それを好きではありません。
このファイルを分割して小規模のチャンクに分割すると、どのようにピース単位でインポートできますか?
編集:実は、それはPostgreSQLデータベースです。私はチャンク内のすべてのデータをどのようにエクスポートすることができるかについて、他の提案をしています。自分のサーバーにphpPgAdminがインストールされており、CSV、タブ形式、およびXML形式を受け入れることができます。
私はphihagのスクリプトを修正する必要がありました:
import json
with open('fixtures/PostalCodes.json','r') as infile:
o = json.load(infile)
chunkSize = 50000
for i in xrange(0, len(o), chunkSize):
with open('fixtures/postalcodes_' + ('%02d' % (i//chunkSize)) + '.json','w') as outfile:
json.dump(o[i:i+chunkSize], outfile)
ダンプ:
pg_dump -U username -t table database > filename
を復元:
psql -U username < filename
(Iドン」を何かpg_restoreが何をしているのか知っていますが、エラーが出ます)
このチュートリアルでは、この情報を便利に残しています。ほとんどの状況でおそらく必要な-U
オプションです。はい、マニュアルページにこれについて説明していますが、気にしない50のオプションを選別するのは常に苦痛です。
私はケニーの提案に行くことになった...それはまだ大きな痛みだった。テーブルをファイルにダンプし、圧縮し、アップロードし、抽出した後、インポートしようとしましたが、データは生産上わずかに異なり、外部キーが不足していました(郵便番号が都市に付いています)。もちろん、私は新しい都市をインポートすることはできませんでした。なぜなら、それを静かに無視するのではなく、重複したキーエラーが発生するからです。だから私はそのテーブルを空にして、都市のためのプロセスを繰り返し、他に何かが都市に縛られていることを認識するだけで、私はそのテーブルも空にしなければならなかった。都市を戻してから、ついに郵便番号をインポートすることができました。今はすべてがすべてに結びついていて、すべてのエントリを再作成しなければならなかったので、データベースの半分を削除しました。美しい。私はまだサイトを立ち上げていない良いこと。また、テーブルを空にしたり、テーブルを切り捨てても、シーケンス/自動インクリメントはリセットされていないようですが、私はID 1を持っているカップルの魔法のエントリがあるので、それを削除したりリセットしなければなりませんそれらはあまりにも(私は)わからないので、私は手作業で1のそれらのためのPKsを編集しました。
私はphihagのソリューションで同様の問題に遭遇していたでしょう、エクスポートスクリプトと一致する別のインポートスクリプトを書いていない限り、彼は文字通り私の質問に答えましたが、とても感謝しています。 Pythonで
pg_dumpはうまくいくはずですが、復元がチャンク内になければ余りにも多くのリソースを消費する可能性があります。私が出力でやっているのは、それを私のプロダクションサーバーにインポートすることだけです。 – mpen
私は今、領域を推測することになっていますが、私はJSONメソッドのリソース利用率がJSON解析と関係していると思っていたでしょう。しかし、私が言うように、それは_total_推測です。私はpg_dumpとpg_restoreメソッドを使って何が起こったのかを見ています(もちろんリソースを見ている間); – Kenny
これはそうです(これまではPostgresを使っていないことが分かりました):--data-only スキーマ(データ定義)ではなくデータのみをダンプします。 – Kenny