PostgreSQL COPY命令问题
在我的Postgresql数据库中,我创建了一个叫做 NAV_DATA
的表,这个表有五个列:
id (PKEY)
,name (VARCHAR)
,call_type (VARCHAR)
,date_created (date)
对于这些列,我有一个csv文件,使用制表符 \t
作为分隔符,使用双引号 "
作为引用字符。
这个文件中还有一些中间列是空的。
我该如何在复制命令中允许接受空值呢?
我想插入的列是 (name, call_type, date_created)
。在我的csv文件中没有 id
这个字段。
我该如何将特定的列复制到数据库中呢?
这个问题是否也和制表符 \t
有关呢?
2 个回答
如果你想知道在CSV文件中如何表示NULL
值,可以看看Milen在评论中提到的手册页面。或者你可以自己写一些测试数据(包括NULL
值)到你的表里,然后用COPY TO
导出。这样你就能得到COPY FROM
所期望的格式。
在标准格式中,NULL
用\N
表示,而在标准CSV
格式中,则是在分隔符之间什么都没有。在COPY
命令中没有提到的列会用它们各自的默认值填充。
比如说,一个序列列(像id
)会为每一行从相关的序列中获取nextval()
。如果id
还没有默认值,可以创建一个序列,并把nextval('my_sequence_name')
设为这个列的默认值。
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。为了帮助大家更好地理解这些问题,下面我会用简单的语言来解释。
首先,很多时候我们需要在代码中使用一些特定的功能,这些功能可能来自于外部的库或框架。这就像是我们在做饭时需要用到一些调料或工具,才能做出美味的菜肴。
当我们在使用这些工具时,可能会遇到一些错误或不明白的地方。这时候,我们可以通过查阅文档、搜索网上的资料,或者在编程社区提问来找到解决方案。
记住,编程是一个不断学习和解决问题的过程,遇到困难是很正常的。只要我们保持耐心,积极寻求帮助,就一定能找到答案。
copy "NAV_DATA" (name,call_type,date_created) from 'c:/test.txt' with delimiter '\t' csv