csv PSQL \copy看到额外的数据,不会导入,生成非序列ID

uplii1fm  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(75)

我收到一条信息:

ERROR:  extra data after last expected column
CONTEXT:  COPY words, line 1: ",a"

字符串
当我运行这个命令时:第一个月
导入的文件如下所示:

,a
,aah
,aahed
,aahing
,aahs
,aardvark
,aardvarks
,aardwolf
,ab


这是一个从电子表格导出的.csv文件,在VS Code中打开,并在做了一些小的修改后保存。我已经尝试了csv格式的许多变体:带逗号,在行尾带逗号,在行尾带回车符,等等。等等,我想这就是问题所在,但这似乎也与psql没有在第一列创建id有关;方案如下:

Table "public.words"
 Column | Type | Collation | Nullable | Default 
--------+------+-----------+----------+---------
 id     | uuid |           | not null | 
 word   | text |           |          | 
Indexes:
    "words_pkey" PRIMARY KEY, btree (id)
    "uq:words.word" UNIQUE CONSTRAINT, btree (word)


编辑:我想知道这是否与id非空但不是串行有关。这个db由Vapor使用,它通常生成作为UUID的id。但在这种情况下,似乎psql不能生成这些,也不能将该字段留空。
有没有办法让sql为id列生成一个UUID?这似乎应该是基本的,但我找不到任何参考这个特定的问题。
如果这影响到任何事情,这一切都发生在Docker中。

qfe3c7zg

qfe3c7zg1#

解决方案更像是一种变通办法。这个问题确实是因为sql没有(至少从我所学到的)生成uuid的工具。因此,我重新生成了csv文件,在第一列之前添加了第二列,并使用了一个通用的串联公式在电子表格中生成uuid模式的字符串,尽管我可能更愿意通过编程来完成。
无论哪种方式,导出该文件并将其复制进来都是有效的。

相关问题