Bee*_*eba 8 csv postgresql copy
我有一个包含约 300,000 行的 .csv 文件,其中一些违反了我在 postgres 数据库中设置的某些约束。有没有办法将我的 .csv 文件复制到数据库中并让 postgres 过滤掉违反约束的行?我不希望这些行显示在数据库中。
如果这是不可能的,有没有其他方法可以解决这个问题?
我现在正在做的是
COPY blocksequences from '/tmp/blocksequences.csv CSV HEADER;
Run Code Online (Sandbox Code Playgroud)
我得到
'ERROR: new row for relation "blocksequences" violates check constraint "blocksequences_partid3_check"
DETAIL: Failing row contains (M001-M049-S186, M001, null, M049, S186).
CONTEXT: COPY blocksequences, line 680: "M001-M049-S186,M001,,M049,S186"
Run Code Online (Sandbox Code Playgroud)
错误原因:包含 M049 的列不允许输入该字符串。许多其他行都有这样的违规行为。
我读了一点关于exception when check violation --do nothing我在这里是否走在正确的轨道上?似乎这只是一个 mysql 的事情也许
kli*_*lin 12
通常这是通过这种方式完成的:
COPY命令将数据复制到临时表,INSERT的WHERE子句中的条件命令,在处理非常大的 CSV 文件或非常有限的服务器资源时,请使用扩展名 file_fdw而不是临时表。这是更有效的方法,但它需要服务器访问 CSV 文件(而复制到临时表可以通过网络完成)。
在Postgres 12 中,您可以WHERE在COPY FROM.
| 归档时间: |
|
| 查看次数: |
3358 次 |
| 最近记录: |