2013-04-16 148 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