我在做的10000條記錄批量插入到Postgres的:的PostgreSQL相當於MySQL的--force標誌
INSERT INTO TABLE VALUES (v1),...,(v10000)
我通過Python的Psycopg2庫這樣做。目前,如果其中一個元組(例如5000號炸彈)(例如,如果某個字段的類型錯誤),則整個批量插入操作將失敗,因爲會生成異常。我正在尋找相當於MySQL的--force標誌來解決這個問題;它告訴MySQL繼續進行下去的任何錯誤(http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html#option_mysql_force)
我看不到任何東西在這裏,這是一個更新的PG,這是相當令人擔憂:http://www.postgresql.org/docs/9.3/static/sql-select.html
炸彈是什麼? – 2014-11-24 20:46:57
例如,「對於smallint」,值X太大「。我只想不插入所有違反某種數據插入錯誤並繼續前進的行。因爲我不提前知道所有可能的數據錯誤,所以我寧願不實施這個邏輯來在嘗試插入之前檢查元組......這是多麼噩夢。 – Tommy 2014-11-24 20:48:13
我不認爲這是可能的。 Postgres的事務處理比MySQL更嚴格。 Postgres不支持只有部分語句可以被提交的事務,因爲它違反了事務的「原子」概念。這樣做的唯一方法就是使用單個插入和每個插入保存點。但那會很慢。 – 2014-11-24 21:23:32