可以使用(BULK INSERT語句)將數據從臨時表插入到數據庫中的另一個表中?BULK INSERT TMP TABLE sql server
如何使用此操作,因爲它具有超過100,000條記錄的臨時表?
感謝
(SQL Server 2005中)
可以使用(BULK INSERT語句)將數據從臨時表插入到數據庫中的另一個表中?BULK INSERT TMP TABLE sql server
如何使用此操作,因爲它具有超過100,000條記錄的臨時表?
感謝
(SQL Server 2005中)
臨時表中,只有100,000條記錄應該被插入到另一個表中非常迅速地肯定不夠長超時。如果你有超時,你有一個不同的問題。首先檢查是否有觸發器運行遊標或循環,檢查導入語句是否有任何相關的子查詢,這會導致它慢速運行並檢查數據是否被索引(可以索引臨時表但不能表變量)。看看你的執行計劃,看看bottelneck的位置。
另一種選擇是在1000批次運行 - 一次10,000(你可能要進行實驗,看看你能在多大批量逃脫。)
沒有,BULK INSERT只能從一個文件。您可以將錶轉儲出來,然後使用批量插入將其導回。
是否有一個原因,你不能直接從臨時表插入目標表?即INSERT INTO targetTable SELECT * FROM #tempTable
當我運行此命令(INSERT INTO SELECT * FROM#targetTable tempTable)我收到一條超時消息。 有數據庫上運行多個進程,如果我跑的東西,慢慢地讓數據庫,然後我收到超時。 謝謝 – 2011-05-09 12:31:54
有很多選擇,你可以探討這個問題,包括調整連接和命令超時,直接在您的查詢中指定限制較少的鎖定提示(僅適用),[你的目標表暫時禁用索引(HTTP: //stackoverflow.com/questions/751039/slow-bulk-insert-for-table-with-many-indexes/751062#751062)或嘗試SSIS。可替代地,它是可行的安排在維護窗口這些插入件當數據庫不重負載下? – Scottie 2011-05-10 10:37:50
你說得對。我在查詢中犯了一個錯誤。 謝謝。 – 2011-05-09 16:00:38