2016-04-28 6 views
1

私はPgデータベースを設計しただけで、DBにデータを取り込む方法を選択する必要があります。データはtxtとcsvファイルで構成されていますが、一般に区切り文字、私は同じ構造(ファイルの種類がたくさんあり、私はそれが私のDBの列にそれを関連付けることができるようにファイルの各列が何を見つける必要があります)私は2つの考え方法:効率的なデータインポートPostgreSQL DB

  • ファイルを同じタイプのファイル(JSON)に変換し、定期的にJSONファイルをチェックしてその内容をインポートするようにDBを取得します。

  • JDBCを介してデータベースに直接接続すると、DBに文字列が送信されます(DBに挿入されたものを含むバックアップファイルを作成する必要があります)ので、両方の場合にファイルが作成され、書き込まれます。

あなたは効率的に時間をとるでしょうか?私はちょっと、DB内のjsonファイルを扱う方が簡単なので、最初のものを使いたいと思っています。 他にも歓迎される提案があれば!

+0

dbのjsonファイルを処理するとどういう意味ですか?純粋なjsonドキュメントをデータベースに保存しようとしますか? postgresqlのJSONBフィールドはきれいですが、これはpostgresqlを使用する理想的な方法ではありません。 nosqlの方が良いでしょう。 – e4c5

+0

いいえ、私はJSONBについて知っているjsonからのデータをインポートすることを意味しませんでしたが、私の場合は非常に有用ではありません –

答えて

1

JSONまたはCSV

あなたはどちらかCSVまたはJSON形式にデータを変換する自由を持っている場合は、CSVが選択するものです。これは、COPY FROMを使用して大量のデータを同時にpostgresqlに一括して読み込むことができるためです。

CSVはCOPYでサポートされていますが、JSONはサポートされていません。

値を直接挿入します。

これは、いくつかの(またはおそらく数千の)レコードを挿入するだけで、大量のレコードには適していない場合には、アプローチがとられます。

この方法を選択すると、COPY TOを使用してバックアップを作成できます。ただし、Javaコードを使用してバックアップファイルを作成する必要があると思われる場合は、 CSV形式を選択すると、上記のようにバルクロードできることを意味します。

+0

データがかなり大きくなることがあるので、最初に提案された方法が優れています。 しかし、COPY FROMで使用するJSONは悪いですか? [ここ](http://stackoverflow.com/questions/33129526/loading-json-data-from-a-file-into-postgres)に記載されている方法は、CSVを使用するよりももう少し時間がかかりますが、それでも安全ですか? jsonファイルの各行がDB内の行を表すことを確認する必要があります(基本的にjsonファイルを一時表に一括インポートしてから目的の値を抽出し、対応する列に挿入します) –

+0

はい、その中で特にたとえば、レコード全体が単一の列、つまりJSONフィールド(JSONBフィールドで廃止されました)としてロードされています。それはリレーショナルではありません。データをそのように保存したい場合、それは完全に可能で安全ですが、最適ではありません。あなたはRDBMSの機能のいずれかを利用していません – e4c5

+0

基本的に、jsonbフィールドを通過したり、文字の後にjsonデータ文字全体を読むことなく、jsonデータを取得する他の方法はありませんか? –