【问题标题】:PostgreSQL COPY FROM Command HelpPostgreSQL COPY FROM 命令帮助
【发布时间】:2011-08-15 10:51:16
【问题描述】:

我有一个非常大的 CSV 文件(几百 MB),我正在尝试将其导入 Postgres 表,出现问题时出现一些主键违规(CSV 文件中的重复记录)

如果是这样,我可以手动过滤掉这些记录,但这些文件是由每小时生成此类数据的程序生成的。我的脚本必须自动将其导入数据库。

我的问题是:有什么办法可以让我在 COPY 命令或 Postgres 中设置一个标志,这样它就可以跳过重复的记录并继续将文件导入表?

【问题讨论】:

    标签: database postgresql csv-import


    【解决方案1】:

    我的想法是通过两种方式解决这个问题:

    1. 在复制过程中使用可帮助创建重复行的“异常报告”的实用程序such as this one
    2. 通过首先将数据加载到临时表中来更改您的工作流程,按摩它以查找重复项(可能与您的目标表连接并使用 dup 标志标记临时表中的所有现有记录),然后仅导入丢失的记录并发送复制到异常表。

    我个人更喜欢第二种方法,但这取决于您的具体工作流程。

    【讨论】:

    • 我也会选择第二种解决方案(或使用不同的工具来加载数据)
    • 我会选择第二种解决方案
    • 我尝试了@dawebber 的第二种方法,但随着每次导入的数据库大小增加,进一步的导入会延迟,并且导入时间会随着表的增长而增加。
    • @regexhacks,工作流的哪一部分出现了放缓?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2019-03-18
    • 2020-05-24
    相关资源
    最近更新 更多