我有一個非常大的表,它是以編程方式創建的,並且需要發送才能添加到遠程站點的SQL Server數據庫中。在SQL Server中爲大表創建包
這樣做的最好方法是什麼?
該表可能包含成千上萬個相當短的記錄,並且其內容需要添加到現有表中。
我有一個非常大的表,它是以編程方式創建的,並且需要發送才能添加到遠程站點的SQL Server數據庫中。在SQL Server中爲大表創建包
這樣做的最好方法是什麼?
該表可能包含成千上萬個相當短的記錄,並且其內容需要添加到現有表中。
我會批量複製數據,如有必要將其壓縮 - 然後在目標位置插入批量複製。這應該在目標站點上絕對不需要額外的東西 - 並且如果接收方不能信任在命令行中運行批量複製,則可以編寫一個簡單的.NET可執行文件來完成這項工作。
@Shahar如果您在批量複製方面遇到問題,那麼這些問題是在源代碼還是目的地方?您是否嘗試在目標位置導入時使用批量處理?請參閱http://msdn.microsoft.com/en-us/library/ms188267.aspx – 2011-06-20 13:01:42
大容量複製的問題在不同的環境中,其中多個線程一次添加到同一個表中。我在這裏實現它,它工作正常。 –
沒有關於你的表格的具體細節,它聽起來好像簡單地導出到CSV(使用你自己的代碼或SSIS)應該做的。如果您正在以電子方式傳輸數據,則始終可以在數據發送之前對其進行壓縮。
您的VB.net工具可以執行SQL以在目標數據庫中創建表,然後僅通過執行INSERT
語句來加載行。它不會很快,但它會實現你的目標,不需要任何特殊的工具,只需要你的應用程序。
我不確定你會找到一個解決方案,它將所有內容打包到一個文件中,並且除非您使用購買的工具(如
Redgate's SQL Packager),否則不需要客戶端設置。
我回過頭來,看下面的「編輯2」。
我的投票是購買Redgate工具,因爲它需要多長時間才能開發&測試解決方案,該解決方案將提供包含您的模式和數據的單個exe
?
編輯:你也應該調查BCP tool and BULK INSERT陳述。
編輯2:另一種方法是我剛纔發現的,數據庫發佈嚮導。它可以生成一個SQL腳本來創建表格然後插入數據。當然,這將會是一個很大的SQL腳本,但至少你不必在客戶機上創建任何程序或安裝任何東西,因爲你正在向它們發送一個文本文件。
您應該安裝它,搜索SqlPubWiz.exe
和here's an example of using it。
過去我們嘗試過使用SQL插入方法,但文件太大,並且失敗。 –
這些字段是字符串和整數。 我們不能使用購買的工具,因爲它需要安裝在不受我們控制的計算機上。 我們有BCP和BULK INSERT的經驗,但它也無法處理這麼多的記錄。 –
我相信Redgate的工具不需要客戶端機器上的任何安裝,它會生成一個單獨的可執行文件,用於創建模式並導入數據。他們做了14天的試用,爲什麼不試試呢?順便說一句,我沒有隸屬於Redgate,也沒有從他們的產品銷售中受益,我只是認爲他們製作了一些很好的SQL工具。 – Tony
您正在使用哪些版本的SQL Server? –
作爲工具/客戶端的SSIS或c#等? – gbn
SQL服務器2005年和2008年。 我正在建設的工具是在VB.net。 目標是不要求客戶端上的任何東西打開包裝。 –