Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PostgreSQL复制命令问题_Python_Postgresql_Csv_Postgresql Copy - Fatal编程技术网

Python PostgreSQL复制命令问题

Python PostgreSQL复制命令问题,python,postgresql,csv,postgresql-copy,Python,Postgresql,Csv,Postgresql Copy,在我的Postgresql数据库中,我创建了一个名为NAV_DATA的表,共有五列: id (PKEY) ,name (VARCHAR) ,call_type (VARCHAR) ,date_created (date) 对于这些列,我有一个csv文件,其中包含分隔符选项卡\t和引号“ 它的中间列中还有一些空字段 如何允许在copy命令中接受空值 我想插入列(名称、呼叫类型、创建日期)。我的csv中没有字段id 如何将特定列复制到数据库中 该问题还涉及分隔符选项卡\t?如果您想知道CSV文件

在我的Postgresql数据库中,我创建了一个名为
NAV_DATA
的表,共有五列:

 id (PKEY)
,name (VARCHAR)
,call_type (VARCHAR)
,date_created (date)
对于这些列,我有一个csv文件,其中包含分隔符选项卡
\t
和引号

它的中间列中还有一些空字段

如何允许在copy命令中接受空值

我想插入列
(名称、呼叫类型、创建日期)
。我的csv中没有字段
id

如何将特定列复制到数据库中


该问题还涉及分隔符选项卡
\t

如果您想知道CSV文件中如何表示
NULL
值,请查看@Milen在其评论中链接的手册页面。或者编写一些测试数据(包括
NULL
值)将其导出到表中,并使用
复制到
。您可以获得
复制所需的格式

copy "NAV_DATA" (name,call_type,date_created) from 'c:/test.txt' with delimiter '\t' csv
在标准格式中,
NULL
\N
表示,在标准格式中,
CSV
由分隔符之间的零表示。在
COPY
命令中未提及的列将填入各自的默认值


例如,一个串行列(如
id
可能)将从每行的关联序列中获取
nextval()
。如果
id
还没有默认值,则为其创建
nextval('my_sequence\u name')
列默认值。

请查看手册的第页,如果您发现任何不清楚的地方,请修改您的问题。您提到“5列”“,但只显示4?我认为表名不应该用引号括起来。问题是每个记录的主键ID都会自动递增?Postgres对表名和列名区分大小写,除非被qoutes包围,否则它将转换为小写。这意味着NAV_数据与名为NAV_数据的表不匹配。您必须在查询中写入“导航数据”。您可以使用Erwin建议的序列。就我个人而言,当我导入CSV时,我会将其导入到与CSV结构匹配的表中,然后使用SQL查询将导入的脏表复制到我的干净表中。通过这种方式,您可以修剪空格、设置空值、创建序列并运行DISTINCT查询以消除重复项。