Gho*_*man 22 postgresql file-io postgresql-copy
我需要将结果数据从PostgreSQL中的查询导出到Excel/CSV.
我用PostgreSQL 8.2.11
.
SQL error:
ERROR: relative path not allowed for COPY to file
In statement:
COPY (select distinct(m_price) from m_product)TO '"c:\auto_new.txt"';
Run Code Online (Sandbox Code Playgroud)
Erw*_*ter 37
Unix样式文件名的示例:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
Run Code Online (Sandbox Code Playgroud)
阅读手册COPY
(链接到8.2版).
您必须使用目标文件的绝对路径.请务必使用空格双引号文件名.MS Windows示例:
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
Run Code Online (Sandbox Code Playgroud)
在PostgreSQL 8.2中,standard_conforming_strings = off
默认情况下,你需要加倍反斜杠,因为它\
是一个特殊字符并由PostgreSQL解释.适用于任何版本.这一切都在精美的手册中:
文件名
输入或输出文件的绝对路径名.Windows用户可能需要使用
E''
字符串和双反斜杠作为路径分隔符.
或现代语法standard_conforming_strings = on
(默认自Postgres 9.1):
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
Run Code Online (Sandbox Code Playgroud)
或者您也可以在Windows下使用正斜杠表示文件名.
另一种方法是使用默认终端客户端的元命令\copy
psql
.
您还可以使用像pgadmin这样的GUI,并从结果网格中复制/粘贴到Excel以进行小查询.
密切相关的答案:
MySQL的类似解决方案:
在PostgreSQL 9.4中使用Ubuntu中的标题创建文件CSV :
COPY (SELECT * FROM tbl) TO '/home/user/Desktop/result_sql.csv' WITH CSV HEADER;
Run Code Online (Sandbox Code Playgroud)
注意:该文件夹必须是可写的.
小智 5
这对我有用:
COPY (SELECT * FROM table)
TO E'C:\\Program Files (x86)\\PostgreSQL\\8.4\\data\\try.csv';
Run Code Online (Sandbox Code Playgroud)
就我而言,问题在于对特殊文件夹的写入权限(尽管我以管理员身份工作),在更改 PostgreSQL 下原始数据文件夹的路径后,我成功了。
归档时间: |
|
查看次数: |
101825 次 |
最近记录: |