PostgreSQL で CSV をインポートする方法を備忘録として残しておく

方法

\COPY を使用する

環境

  • PostgreSQL: 13.3

実際のコード

su - postgres
psql
\c {DB 名};
\COPY {テーブル名} FROM '{csvファイルパス}' DELIMITER ',' CSV;

# 例 HEADER なしの場合
\COPY users FROM './users.csv' DELIMITER ',' CSV;
# 例 HEADER ありの場合
\COPY users FROM './users.csv' DELIMITER ',' CSV HEADER;

# エクスポートする場合は以下
su - postgres
psql
\c {DB 名};
\COPY {テーブル名} TO '{csvファイルパス}' WITH CSV DELIMITER ',';
# 例 HEADER なしの場合
\COPY users TO './users.csv' WITH CSV DELIMITER ',';
# 例 HEADER ありの場合
\COPY users TO './users.csv' WITH CSV HEADER DELIMITER ',';
# 例 10 件取得(id 昇順)
\COPY (select * from users order by id limit 10) TO './users.csv' WITH CSV HEADER DELIMITER ',';

Shell Script として行う場合は以下のようにする

#!/bin/sh
# ユーザを postgres に切り替えたままでコマンドの実行を行う ※CSV インポート
su - postgres <<EOF
psql
\c {DB 名};
\COPY {テーブル名} FROM '{csvファイルパス}' DELIMITER ',' CSV;
EOF