web-dev-qa-db-ja.com

PostgreSQLデータベースのテキストファイルからデータをロードする方法

次のようなファイルがあります(CSVファイル):

value1|value2|value2....

value1|value2|value2....

value1|value2|value2....

value1|value2|value2....

これらのデータをpostgresqlテーブルにロードしたいと考えています。

20
ulima69

COPY の形式を指定する、以下の CSV のわずかに修正されたバージョンがより適切に機能しました。この形式は、テキスト内のバックスラッシュ文字を大騒ぎせずに処理します。デフォルトの形式は、やや風変わりな TEXT です。

COPY myTable FROM '/path/to/file/on/server' ( FORMAT CSV, DELIMITER('|') );
17
user1225054

データがファイルvalues.txtおよびそれらをデータベーステーブルmyTableにインポートする場合、次のクエリがジョブを実行します

COPY myTable FROM 'value.txt' (DELIMITER('|'));

https://www.postgresql.org/docs/current/static/sql-copy.html

14

PostgresのCOPYコマンドを確認してください。

http://www.postgresql.org/docs/current/static/sql-copy.html

前述のCOPYコマンドを使用し、csv(およびMySQL、SQLite、dBase)からデータをロードできる Pgloader があります。また、データの読み取りとコピーに個別のスレッドを使用しているため、非常に高速です(興味深いことに、PythonからCommon LISPに書き込まれ、20〜30倍の速度向上が得られました。 ブログ投稿 )。

Csvファイルを読み込むには、次のような小さな設定ファイルを書き込む必要があります。

LOAD CSV  
  FROM 'path/to/file.csv' (x, y, a, b, c, d)  
  INTO postgresql:///pgloader?csv (a, b, d, c)  
  …
2
Ehvince