我可以使用一些建議/想法。 我寫了一個控制檯應用程序,用於查詢MS Access中一個表格中的所有數據(我知道,但是我繼承了它)到一個SQL表格。它每天早上作爲計劃任務運行。兩個表格之間的字段不相同。目前,我從MS Access表中選擇所有數據,遍歷數據集並將每行插入到SQL表中。我也在這個過程中寫了一個快速的日誌文件。它有效,但速度並不快。我將不勝感激您的任何想法,您可能必須改進此過程。 謝謝!複製SQL數據的最快方法
回答
這是方式不是個別insert
語句更快。
您必須爲主鍵增加自己的標識字段值。要做到這一點,首先搶你離開的最後一個標識字段值:
select top 1 id_customer from customers order by id_customer desc
然後通過你的DataSet
增加的int
變量,你循環。
或者您也可以使用GUID for primary key column。使用SqlBulkCopy的
示例代碼:
public static void BulkLoadDataTable(DataTable table, string destinationTable)
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(_connectionString))
{
bulkCopy.BulkCopyTimeout = 1200;
bulkCopy.DestinationTableName = destinationTable;
bulkCopy.WriteToServer(table);
}
}
強類型數據表:
using System;
using System.Data;
public class CustomersDataTable : DataTable
{
public CustomersDataTable() : base()
{
base.TableName = "Customers";
Columns.Add(new DataColumn("id_customer", typeof(int)));
Columns.Add(new DataColumn("first_name", typeof(string)));
Columns.Add(new DataColumn("last_name", typeof(string)));
Columns.Add(new DataColumn("active", typeof(bool)));
}
}
你看着SSIS包?我會先看看。如果您沒有訪問權限,請查看此處提到的SqlBulkCopy類。
你也可以使用SELECT statement with an INSERT看看。
使用INSERT的SELECT語句會很慢。 – JohnB 2010-07-01 20:02:19
是的,但它仍然比單個插入更快。這將是我的最後一個選擇,但我想我會介紹這個選項。 SSIS將是我認爲的方式。 – knight0323 2010-07-01 20:39:27
爲什麼在SELECT語句中使用INSERT進行批量插入會很慢? – 2010-07-01 23:42:05
- 1. SQL 2005 - 快速複製數據庫+數據的快速方法
- 2. 複製對象的最快方法
- 3. 複製postgresql數據庫的更快方法(或最好的方法)
- 4. 複製數據庫的最佳方法(SQL Server 2008)
- 5. T-SQL:複製層次結構數據的最佳方法?
- 6. 創建Sql Server數據庫夜間複製的最佳方法
- 7. VBA:最快的方式來複制和數據
- 8. 將矢量內容複製到數組中的最快方法?
- 9. 更新數據表的最快方法
- 10. 查詢數據幀的最快方法
- 11. 加載數據的最快方法
- 12. 從兩個mysql數據庫複製數據的最佳方法
- 13. 在SQL Server表中序列化數據集的最快方法
- 14. 實現SQL Server數據庫 - 查找值的最快方法
- 15. 將Excel表格數據傳輸到SQL 2008R2最快的方法
- 16. 在SQL Server中更改列數據類型的最快方法
- 17. 在Java對象之間複製數據的最快方法是什麼?
- 18. 將所有領域數據複製到JS對象的最快方法?
- 19. C++ - 將數據複製到2個不同線程的最快/可靠方法
- 20. 將6000表和數據從sqlserver複製到oracle ==>最快的方法?
- 21. 複製圖像數據的更快速的方法
- 22. 回滾SQL數據的最快方法是:開發數據修改存儲過程的最佳方法
- 23. 快速複製大型數據庫表的方法
- 24. C#將數據插入SQL數據庫的最快方式
- 25. 重複MySQL記錄的最快方法
- 26. 反覆插入行的最快方法?
- 27. 最佳/最快的方式對大量RTF數據到一個RichTextBox複製?
- 28. Apache Spark - 使用SQL的最快方法?
- 29. SQL - 最快的方法來更新
- 30. 複製不支持複製功能的動態對象的最快方法
創建自己的主鍵只有在插入數百萬條記錄的極端情況下才需要。但是我同意John的觀點,即SqlBulkCopy是最好的選擇。 – Doug 2010-07-01 16:39:29
看起來像BulkCopyClass是要走的路。但是,當字段屬性不匹配會發生什麼?例如,訪問中的字符串字段和SQL中的布爾字段。 – gnome 2010-07-01 16:54:04
那麼你可以遍歷你的數據並按照你想要的方式在SQL Server中建立一個'DataTable',也就是'bool'的'bit'列。 SQL Server應該能夠將非類型化的DataTable中的數據點轉換爲模式中適當的類型,但是我個人會創建一個**強類型的DataTable **(見上文)。你也可以寫出一個.CSV和批量複製。在代碼中循環執行所有這些工作將花費相對較少的時間。主要的觀點是1000個單獨的'insert'語句會浪費**噸的時間! – JohnB 2010-07-01 17:13:23