我使用psql的\dt列出数据库中的所有表,我需要保存结果。
将psql命令的结果导出到文件的语法是什么?
我使用psql的\dt列出数据库中的所有表,我需要保存结果。
将psql命令的结果导出到文件的语法是什么?
当前回答
使用pgsql命令的o参数。
-o,——output=FILENAME将查询结果发送到文件(或|管道)
psql -d DatabaseName -U UserName -c "SELECT * FROM TABLE" -o /root/Desktop/file.txt
其他回答
psql \o命令已经由jhwist描述。
另一种方法是使用COPY TO命令直接写入服务器上的文件。这样做的好处是,它被转储为您选择的易于解析的格式——而不是psql的表格格式。使用COPY FROM导入到另一个表/数据库也很容易。
NB !这需要超级用户或pg_write_server_files权限,并将写入服务器上的文件。
示例:COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
创建一个以';'作为字段分隔符的CSV文件。
与往常一样,详细信息请参阅文档
COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER;
该命令用于将整个表存储为CSV格式
我假设存在一些内部的psql命令,但你也可以从util-linux-ng包中运行脚本命令:
描述 脚本使打印在终端上的所有内容的typescript。
使用下面的查询将结果存储在CSV文件中
\copy (your query) to 'file path' csv header;
例子
\copy (select name,date_order from purchase_order) to '/home/ankit/Desktop/result.csv' cvs header;
希望这对你有所帮助。
\copy是一个postgres命令,可以为任何用户工作。不知道它是否适用于\dt,但一般语法是从以下链接复制的Postgres SQL复制语法
\copy (select * from tempTable limit 100) to 'filenameinquotes' with header delimiter as ','
上述操作将选择查询的输出保存在csv文件提供的文件名中
编辑:
对于我的psql服务器,以下命令工作,这是一个旧版本v8.5
copy (select * from table1) to 'full_path_filename' csv header;