pst*_*ton 250 postgresql psql
我正在使用psql \dt列出数据库中的所有表,我需要保存结果.
将psql命令的结果导出到文件的语法是什么?
jhw*_*ist 428
从psql的help(\?):
\ o [FILE]将所有查询结果发送到文件或管道
命令序列如下所示:
[wist@scifres ~]$ psql db
Welcome to psql 8.3.6, the PostgreSQL interactive terminal
db=>\o out.txt
db=>\dt
db=>\q
Run Code Online (Sandbox Code Playgroud)
int*_*tgr 88
\ojhwist已经描述了psql 命令.
另一种方法是使用该COPY TO命令直接写入服务器上的文件.这样做的好处是它以您选择的易于解析的格式转储 - 而不是psql的列表格式.使用也很容易导入到另一个表/数据库COPY FROM.
NB!这需要超级用户权限,并将写入服务器上的文件.
例: COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
使用';'创建CSV文件 作为字段分隔符.
与往常一样,请参阅文档以获取详细信息
小智 21
\copy这是一个postgres命令可以适用于任何用户.不知道它是否适用于\ dt,但是一般语法是从以下链接Postgres SQL复制语法中复制的
\copy (select * from tempTable limit 100) to 'filenameinquotes' with header delimiter as ','
Run Code Online (Sandbox Code Playgroud)
以上将把选择查询的输出保存在作为csv文件提供的文件名中
编辑:
对于我的psql服务器,以下命令有效,这是旧版本的v8.5
copy (select * from table1) to 'full_path_filename' csv header;
Run Code Online (Sandbox Code Playgroud)
Yav*_*vuz 20
使用 pgsql 命令的 o 参数。
-o, --output=FILENAME 将查询结果发送到文件(或 |管道)
psql -d DatabaseName -U UserName -c "SELECT * FROM TABLE" -o /root/Desktop/file.txt
Run Code Online (Sandbox Code Playgroud)
小智 10
使用以下查询将结果存储在 CSV 文件中
\copy (your query) to 'file path' csv header;
Run Code Online (Sandbox Code Playgroud)
例子
\copy (select name,date_order from purchase_order) to '/home/ankit/Desktop/result.csv' cvs header;
Run Code Online (Sandbox Code Playgroud)
希望这对你有帮助。
如果您遇到以下错误
ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';');
ERROR: must be superuser to COPY to or from a file
HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
Run Code Online (Sandbox Code Playgroud)
你可以这样运行它:
psql somepsqllink_or_credentials -c "COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter ';')" > baz.csv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
202507 次 |
| 最近记录: |