【SQL】copyコマンドを利用したデータの出し入れ

顔妻です。
今回は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への影響も強いのでタイミングをみながら実施してみてください。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA