postgresql的copy命令如何将csv中的引号转换成null插入?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql的copy命令如何将csv中的引号转换成null插入?相关的知识,希望对你有一定的参考价值。
postgresql中“”和null是不同的。
csv中的数据全是带有双引号的,空数据就是一对引号。
用copy命令导入到postgresql中的时候会把“”当一个空字符串插入到数据库,而我想要的是把“”转换成数据库中的空(null)插入。
csv数据中的“”是不可以去掉的;因为数据中往往会有逗号的,如果没有引号的话多一个逗号就多一个列,插入的时候就会出错。
希望大神帮忙。。。
.
如何将表数据从 PostgreSQL (pgAdmin) 导出到 CSV 文件?
【中文标题】如何将表数据从 PostgreSQL (pgAdmin) 导出到 CSV 文件?【英文标题】:How to export table data from PostgreSQL (pgAdmin) to CSV file? 【发布时间】:2019-05-15 14:14:59 【问题描述】:我正在使用 pgAdmin 4.3 版,我想将一个表数据导出到 CSV 文件。我使用了这个查询
COPY (select * from product_template) TO 'D:\Product_template_Output.csv' DELIMITER ',' CSV HEADER;
但它显示错误
相对路径不允许使用 COPY 到文件
请问如何解决这个问题?
【问题讨论】:
【参考方案1】:在查询编辑器中,执行查询后,您只需单击“下载为 CSV (F8)”按钮或使用 F8 键。
来源pgAdmin 4 Query Toolbar
【讨论】:
【参考方案2】:使用绝对路径或 cd 到已知位置,这样您就可以忽略该路径。 例如 cd 进入 documents 目录,然后在那里运行命令。
如果您能够 cd 进入您的 documents 目录,那么命令将是这样的:
假设您想从命令行使用 PSQL。 cd ~/Documents && psql -h host -d dbname -U user
\COPY (select * from product_template) TO 'Product_template_Output.csv' DELIMITER ',' CSV HEADER;
结果将是您当前工作目录(Documents 文件夹)中的 Product_template_Output.csv。
再次使用 psql。
【讨论】:
\COPY
比COPY
好,因为\COPY
也适用于普通用户。【参考方案3】:
试试这个命令:
COPY (select * from product_template) TO 'D:\Product_template_Output.csv' WITH CSV;
【讨论】:
【参考方案4】:你必须删除双引号:
COPY (select * from product_template) TO 'D:\Product_template_Output.csv'
DELIMITER ',' CSV HEADER;
【讨论】:
以上是关于postgresql的copy命令如何将csv中的引号转换成null插入?的主要内容,如果未能解决你的问题,请参考以下文章
在 PostgreSQL 中使用 COPY FROM 命令在多个表中插入