我有很多記錄需要插入到已經很大的表中(表有幾百萬行,我一次插入幾千行)。
當前使用的語法很簡單:
INSERT INTO my_table (name, email) VALUES ('test','[email protected]'),('test2','[email protected]')
這些請求一次以 1000 行為一組。
由于我無法控制的原因,我無法宣告email為唯一列(表已經有重復項)。
如何在每個 INSERT 請求中添加一個條件,在該請求中我們跳過email在資料庫中找到該值時的插入?
因此,假設在上面的請求中,我們發現我們已經有一行 email [email protected]。我想跳過該行但仍插入另一行([email protected])。
我正在努力尋找一種有效的語法。
使用SQL Server和pydb。
提前感謝您的幫助!:D
uj5u.com熱心網友回復:
此查詢應該有效
INSERT INTO my_table (name, email)
SELECT name, email
FROM (VALUES ('test','[email protected]'),('test2','[email protected]')) AS Vals(name, email)
WHERE NOT EXISTS (SELECT 1 FROM my_table x WHERE x.email = Vals.email)
email 列上的索引將使其盡可能快,但仍會比正常插入慢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/463977.html
標籤:Python sql服务器 sql-server-2008
上一篇:執行休眠攔截器時無法注入依賴項-Wildfly/CDI
下一篇:找出最麻煩的where子句
