Prepared statement contains too many placeholders

//
Prepared statement contains too many placeholders - 簡書
http://www.lxweimin.com/p/0a84e680bd6d

場景:使用Kettle進行簡單的數據插入時,出現以下Prepared statement contains too many placeholders錯誤
數據庫:MySQL
先上錯誤截圖:


轉換設計:

報錯信息:

表輸出設計:

DB連接:
以上錯誤提示Prepared statement contains too many placeholders(占位符過多),這是由于我把“提交記錄數量”設為1000,而要插入記錄的表字段有131個,所以要進行批量插入時需要1311000=131000 > 65535 ,故而報錯。
解決方案:
方案1:把DB連接中的 rewriteBatchedStatements 給設置為false(或者去掉),不過這個操作會影響數據的插入速度。
方案2:更改表輸出的設計。確保131個輸出字段的和提交記錄數量的乘積不超過65535。比如把提交記錄數量由1000更改為450(131
450=58950 < 65535)

把提交記錄數量由1000更改為450

參考網址1:http://www.cnblogs.com/chenjianjx/archive/2012/08/14/2637914.html
網址1中內容概括:對delete和update,驅動所做的事就是把多條sql語句累積起來再一次性發出去;而對于insert,驅動則會把多條sql語句重寫成一條風格很酷的sql語句,然后再發出去。官方文檔說,這種insert寫法可以提高性能(”This is considerably faster (many times faster in some cases) than using separate single-row INSERT statements”)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容