LoginSignup
3
0

【PostgreSQL】テーブルとファイル間でデータをコピー

Last updated at Posted at 2023-12-11

コピーができるだと!?

テーブルとファイル間でデータのコピーができるようだ。
やり方は

  • psqlのメタコマンド
  • SQL

の2種類ある。

コピーコマンド

\copy

クライアント側のファイルとテーブル間のデータをコピーするコマンド

  • ネットワークを介したデータの送受信が必要
  • ファイル名は絶対パス・相対パスのどちらでも指定可能
  • 実行に権限は必要ない

構文

  • テーブルのデータをファイルに出力する場合
    \copy テーブル名 to {ファイル名 | stdout} [with] [オプション]

  • ファイルのデータをテーブルに挿入する場合
    \copy テーブル名 from {ファイル名 | stdin} [with] [オプション]

パラメータについて

パラメータ 説明
stdout テーブルのデータを標準出力にコピーする
stdin 標準入力(キーボードからの入力)をテーブルにコピーする

オプション

オプション 説明
delimiter [as] '区切り文字' 各行のデータを列ごとに判別するための区切り文字を指定する
デフォルトではタブ(テキスト形式)カンマ(CSV形式)が区切り文字として使用される
csv コピー対象のデータをCSV形式で扱う場合に指定する
header 出力時にはテーブルのカラム名をヘッダ情報として先頭行に付け足し、入力時にはデータの先頭行を無視する
※コピー対象のデータをCSV形式で扱うときのみ指定できる

COPY

  • ファイル名は絶対パスのみ指定可能
  • ファイル名を指定する場合に限り、実行にはデータベースのスーパーユーザ権限が必要

構文

  • テーブルのデータをファイルに出力する場合
    COPY テーブル名 TO {'絶対パスのファイル名' | STDOUT} [WITH] [オプション];

  • ファイルのデータをテーブルに挿入する場合
    COPY テーブル名 FROM {'絶対パスのファイル名'} [WITH] [オプション];

パラメータについて

パラメータ 説明
STDOUT テーブルのデータを標準出力にコピーする
STDIN 標準入力(キーボードからの入力)をテーブルにコピーする

オプション

オプション 説明
DELIMITER '区切り文字' 各行のデータを列ごとに判別するための区切り文字を指定する
デフォルトではタブ(テキスト形式)カンマ(CSV形式)が区切り文字として使用される
FORMAT csv コピー対象のデータをCSV形式で扱う場合に指定する
HEADER 出力時にはテーブルのカラム名をヘッダ情報として先頭行に付け足し、入力時にはデータの先頭行を無視する
※コピー対象のデータをCSV形式で扱うときのみ指定できる

※ 複数オプションやFORMATオプションは()でくくる

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0