#バッチからPostgreSQLにCSVインポート
##環境
- DBサーバ:Windows10 PostgreSQL11.6
- クライアント端末:Windows10
※ローカル端末とDBサーバは別の端末にしています。
詳細
PostgreSQLでCSVのインポートを行うにはCOPYコマンドを使用します。
「COPY」コマンドにも2種類あり、COPYと**\COPY**があります。
なにが違うのか?
#####[COPY]
- SQLコマンドが実行されるDBサーバーのファイルを読み込む。
- 複数行にわたって記述できる。
- 公式ドキュメント
#####[\COPY]
- ローカルサーバー(ターミナルを開いているサーバー)のファイルを読み込む。
- 1行で記述しなければいけない。
- 公式ドキュメント
##サンプル
COPY table1 (col1, col2) FROM :'CSV_PATH' with encoding 'SJIS' format csv force_not_null(col1, col2) HEADER;
※with句について
encoding: csv 読み込むファイルの文字コードがSJIS
format: 'SJIS' ファイルフォーマットがCSV形式
force_not_null: 指定したカラムが空文字の場合にNULLに設定
HEADER: ヘッダ行がある場合は記載する
※他にもオプションあり
※「COPY」と「\COPY」で使えるオプションが違う。
##補足
COPY テーブル名 FROM ファイル名
(ファイルからテーブルにデータを読み込む)
COPY テーブル名 TO ファイル名
(テーブルからファイルにデータを出力)
・「COPY」の場合はDBサーバ側にCSVを配置してインポートを行い、DBサーバ側にCSVが出力される。
・「\COPY」の場合はクライアント端末側にCSVを配置してインポートを行い、DBサーバ側にCSVが出力される。