【问题标题】:Postgresql csv importation that skips rows跳过行的 Postgresql csv 导入
【发布时间】:2013-04-08 21:24:50
【问题描述】:

我有一个 Postgresql 脚本,可以自动将 csv 文件导入我的数据库。该脚本可以检测重复记录并将其删除,进行适当的 upsert 但仍然无法解决所有问题。基本上 csv 文件是从其他系统导出的,这些系统会在文件的开头和结尾附加额外信息,例如:

Total Count: 2956
Avg Time: 13ms

Column1, Column2, Column3
...      ...      ... 

我想要做的是跳过那些初始行或文件底部的任何行。有什么方法可以在 Postgresql 中通过 COPY 或通过其他路线来做到这一点?我可以通过 Postgresql 调用例如操作系统命令吗?

【问题讨论】:

    标签: postgresql csv-import


    【解决方案1】:

    对于 Linux,使用 tailhead 裁剪文件并将其通过管道传输到您的脚本:

    tail -n +3 file.csv | head -1 | psql -f my_script.sql my_database
    

    然后您的脚本将从 STDIN 复制:

    copy my_table from STDIN;
    

    【讨论】:

    • 对不起,我对 Postgresql 没有太多经验。是否通过 Postgresql 控制台调用了 tail 和 head 命令?我该如何设置?
    • @Dimitris。通过 Linux 命令行。我猜 Windows 会有它的对应部分。
    • 不幸的是,这是在 Windows 机器上。这就是客户所拥有的。所以我想我需要在 Windows 中寻找等价物
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2014-01-05
    相关资源
    最近更新 更多