2013-04-16 117 views
1

我有一个Postgresql脚本,可以自动将csv文件导入到我的数据库中。该脚本可以检测到重复的记录并将其删除,做适当的upsert,但仍然无法处理所有内容。基本上,CSV文件从附加在文件的额外信息e.g开头和结尾其他系统导出:Postgresql csv输入,跳过行

Total Count: 2956 
Avg Time: 13ms 

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

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

回答

2

对于Linux使用tailhead到文件和管道将它裁剪到你的脚本:

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

则脚本会从标准输入复制:

copy my_table from STDIN; 
+0

抱歉,我没有在PostgreSQL多少经验。是否通过Postgresql控制台调用尾部和头部命令?我如何设置? – Dimitris

+0

@Dimitris。通过Linux命令行。我猜Windows会有它的相反部分。 –

+0

不幸的是,这是在Windows机器上。这就是客户所拥有的。所以我想我需要在Windows中寻找相应的东西 – Dimitris