1
假設這個簡單的SQL查詢:忽略PostgreSQL的批量插入錯誤
INSERT INTO table (col1,col2) VALUES (val1,val2),(val3,val4),(val5,val6);
比方說val3
是col1
無效值。這會導致psql中止整個INSERT命令 - 它不會插入(val1,val2)
和(val5,val6)
。
是否有可能讓PostgreSQL忽略這個錯誤,因此不會插入(val3,val4)
對,但仍然有(val1,val2)
和(val5,val6)
繼續嗎?
我每天從我的合作伙伴處獲取文本文件中的數據庫轉儲(無法更改該文件),我使用它來複制它的副本。有時他的INSERT查詢會導致以下錯誤:
ERROR: invalid byte sequence for encoding "UTF8": 0x00
......這使得整個30000+個值沒有插入表中,因爲其中一個值是錯誤的。
順便說一句。我提出的一個解決方案是解析該文本文件並將所有批量INSERT命令更改爲多個單值命令。但在實施之前 - 也許你們想出了更好的解決方案。 – grzaks 2010-10-06 13:17:24
你可能會更好地使用COPY語句而不是大插入。 – Pointy 2010-10-06 13:21:34
另外,這些文件是如何準備的? **爲什麼**有那裏的非法字節序列? – Pointy 2010-10-06 13:22:40