2011-05-09 125 views
0

可以使用(BULK INSERT語句)將數據從臨時表插入到數據庫中的另一個表中?BULK INSERT TMP TABLE sql server

如何使用此操作,因爲它具有超過100,000條記錄的臨時表?

感謝

(SQL Server 2005中)

回答

0

臨時表中,只有100,000條記錄應該被插入到另一個表中非常迅速地肯定不夠長超時。如果你有超時,你有一個不同的問題。首先檢查是否有觸發器運行遊標或循環,檢查導入語句是否有任何相關的子查詢,這會導致它慢速運行並檢查數據是否被索引(可以索引臨時表但不能表變量)。看看你的執行計劃,看看bottelneck的位置。

另一種選擇是在1000批次運行 - 一次10,000(你可能要進行實驗,看看你能在多大批量逃脫。)

+0

你說得對。我在查詢中犯了一個錯誤。 謝謝。 – 2011-05-09 16:00:38

2

沒有,BULK INSERT只能從一個文件。您可以將錶轉儲出來,然後使用批量插入將其導回。

是否有一個原因,你不能直接從臨時表插入目標表?即INSERT INTO targetTable SELECT * FROM #tempTable

+0

當我運行此命令(INSERT INTO SELECT * FROM#targetTable tempTable)我收到一條超時消息。 有數據庫上運行多個進程,如果我跑的東西,慢慢地讓數據庫,然後我收到超時。 謝謝 – 2011-05-09 12:31:54

+0

有很多選擇,你可以探討這個問題,包括調整連接和命令超時,直接在您的查詢中指定限制較少的鎖定提示(僅適用),[你的目標表暫時禁用索引(HTTP: //stackoverflow.com/questions/751039/slow-bulk-insert-for-table-with-many-indexes/751062#751062)或嘗試SSIS。可替代地,它是可行的安排在維護窗口這些插入件當數據庫不重負載下? – Scottie 2011-05-10 10:37:50