psqlコマンドでテーブルのデータを抽出する方法を紹介する。
psqlコマンドでデータ出力(デフォルト)
psqlコマンドでテーブルからデータを抽出し、ファイルに出力する方法は以下のように書けば、できる。
psql データベース名 -c “SQL文”> CSVファイル名
実行例:
$ psql -c “select * from test;” > test.csv
$ cat test.csv
$ psql -c “select * from test;” > test.csv
$ cat test.csv
結果:
id | name | age
——+——+—–
0001 | fuji | 99
0002 | | 88
(2 rows)
id | name | age
——+——+—–
0001 | fuji | 99
0002 | | 88
(2 rows)
psqlコマンドでデータ出力(カンマ区切りCSV)
psql データベース名 -c “SQL文” -A -F, > CSVファイル名
説明:
-A 位置揃えなしの出力モードに切り替えます (デフォルトの出力モードは位置揃えありです)。
-F separator separatorを位置揃えを行わない出力におけるフィールド区切り文字として使用します。 \pset fieldsepもしくは\fと同じ効力を持ちます。
-A 位置揃えなしの出力モードに切り替えます (デフォルトの出力モードは位置揃えありです)。
-F separator separatorを位置揃えを行わない出力におけるフィールド区切り文字として使用します。 \pset fieldsepもしくは\fと同じ効力を持ちます。
実行例:
$ psql -c “select * from test;” -A -F , > test.csv
$ cat test.csv
結果:
id,name,age
0001,fuji,99
0002,,88
(2 rows)
$ psql -c “select * from test;” -A -F , > test.csv
$ cat test.csv
結果:
id,name,age
0001,fuji,99
0002,,88
(2 rows)
psqlコマンドでデータ出力(タブ区切りTSV)
psql データベース名 -c “SQL文” -A -F $’\t’ > CSVファイル名
実行例:
$ psql -c “select * from test;” -A -F $’\t’ > test.csv
$ cat test.csv
id name age
0001 fuji 99
0002 88
(2 rows)
$ psql -c “select * from test;” -A -F $’\t’ > test.csv
$ cat test.csv
id name age
0001 fuji 99
0002 88
(2 rows)
出力列名ヘッダと行数フッタの非表示
psql データベース名 -t -c “SQL文” -A -F $’\t’ > CSVファイル名
実行例:
$ psql -t -c “select * from test;” -A -F $’\t’ > test.csv
$ cat test.csv
0001 fuji 99
0002 88
$ psql -t -c “select * from test;” -A -F $’\t’ > test.csv
$ cat test.csv
0001 fuji 99
0002 88