顔妻です。
今回はpostgreSQLのCOPYコマンドを利用してDBにデータをインポートする方法です。アドホックにデータ処理を行っているときに他のシステムから取得したデータや現場に転がっているデータをインポートしたい場面があるのではないでしょうか、そんなとき是非試してみてください。
前提
- バージョンはpostgreSQL 12
- DB側のスキーマとcreate table は実施済み。(参考:create table やり方(SQL))
- 対象データはbank_marketing_datasets(参考:bank marketing datasets)
- 基本的はターミナルやCMDといったクライアント側での操作
- 「COPY」と「\copy」は利用する場所がサーバーかクライアントかの違い。
psqlへログイン
コマンドプロンプトやターミナルを利用してpsqlにまずはログインしましょう。
psql -h <ホスト名> -p 5432 -U <ログイン名> -d <DB名>
\COPYコマンドを使ってDBへのデータインポート
cmdやターミナルでpsqlへログイン後以下のコマンドを実施してください。ヘッダーがついているCSVのファイルを想定しています。ちなみにエンコードは「UTF-8」です。
— \copyを利用したDBへのデータインポート
\copy datasets.bank_marketing_datasets from ‘(ファイルパス)’ with csv header ENCODING’UTF-8′;
\COPYコマンド使ってDBからデータエクスポート
DBからエクスポートするときのやり方です。tsv形式でデータを吐き出す想定で実施しています。「DELIMITER」で区切り文字をタブ文字に指定しています。
–\copyを利用したDBへのデータエクスポート
\COPY datasets.bank_marketing_datasets TO ‘(ファイルパス)’ WITH CSV DELIMITER E’\t’ FORCE QUOTE * NULL AS ” HEADER;
まとめ
いかがでしょうか、クライアントソフトといったツールでマウスを使いながら操作することもできますが、扱うデータ量が大きかったりするときにはきっと活躍すると思います。とはいえ、データ量が多い時にはDBへの影響も強いのでタイミングをみながら実施してみてください。