2011-06-20 42 views
1

我有一個非常大的表,它是以編程方式創建的,並且需要發送才能添加到遠程站點的SQL Server數據庫中。在SQL Server中爲大表創建包

這樣做的最好方法是什麼?

該表可能包含成千上萬個相當短的記錄,並且其內容需要添加到現有表中。

+0

您正在使用哪些版本的SQL Server? –

+0

作爲工具/客戶端的SSIS或c#等? – gbn

+0

SQL服務器2005年和2008年。 我正在建設的工具是在VB.net。 目標是不要求客戶端上的任何東西打開包裝。 –

回答

1

我會批量複製數據,如有必要將其壓縮 - 然後在目標位置插入批量複製。這應該在目標站點上絕對不需要額外的東西 - 並且如果接收方不能信任在命令行中運行批量複製,則可以編寫一個簡單的.NET可執行文件來完成這項工作。

+0

@Shahar如果您在批量複製方面遇到問題,那麼這些問題是在源代碼還是目的地方?您是否嘗試在目標位置導入時使用批量處理?請參閱http://msdn.microsoft.com/en-us/library/ms188267.aspx – 2011-06-20 13:01:42

+0

大容量複製的問題在不同的環境中,其中多個線程一次添加到同一個表中。我在這裏實現它,它工作正常。 –

0

沒有關於你的表格的具體細節,它聽起來好像簡單地導出到CSV(使用你自己的代碼或SSIS)應該做的。如果您正在以電子方式傳輸數據,則始終可以在數據發送之前對其進行壓縮。

您的VB.net工具可以執行SQL以在目標數據庫中創建表,然後僅通過執行INSERT語句來加載行。它不會很快,但它會實現你的目標,不需要任何特殊的工具,只需要你的應用程序。

我不確定你會找到一個解決方案,它將所有內容打包到一個文件中,並且除非您使用購買的工具(如 Redgate's SQL Packager),否則不需要客戶端設置。 我回過頭來,看下面的「編輯2」。

我的投票是購買Redgate工具,因爲它需要多長時間才能開發&測試解決方案,該解決方案將提供包含您的模式和數據的單個exe

編輯:你也應該調查BCP tool and BULK INSERT陳述。

編輯2:另一種方法是我剛纔發現的,數據庫發佈嚮導。它可以生成一個SQL腳本來創建表格然後插入數據。當然,這將會是一個很大的SQL腳本,但至少你不必在客戶機上創建任何程序或安裝任何東西,因爲你正在向它們發送一個文本文件。

您應該安裝它,搜索SqlPubWiz.exehere's an example of using it

+0

過去我們嘗試過使用SQL插入方法,但文件太大,並且失敗。 –

+0

這些字段是字符串和整數。 我們不能使用購買的工具,因爲它需要安裝在不受我們控制的計算機上。 我們有BCP和BULK INSERT的經驗,但它也無法處理這麼多的記錄。 –

+0

我相信Redgate的工具不需要客戶端機器上的任何安裝,它會生成一個單獨的可執行文件,用於創建模式並導入數據。他們做了14天的試用,爲什麼不試試呢?順便說一句,我沒有隸屬於Redgate,也沒有從他們的產品銷售中受益,我只是認爲他們製作了一些很好的SQL工具。 – Tony