2012-07-06 209 views
2

我有超過3 000 000行的表格。我有嘗試將數據從手動將其與SQL Server Management Studio中Export data功能到Excel導出,但我遇到了幾個問題:SQL Server Management Studio 2012 - 從表格中導出/導入數據

  • 時創建.txt文件手動複製和粘貼的數據(這是幾次,因爲如果你複製SQL Server Management Studio中的所有行,它會拋出內存不足錯誤)我無法用任何文本編輯器打開它並複製行;

  • Export data到Excel不起作用,因爲Excel不支持這麼多行

最後,隨着Export data功能我已經創建了一個.sql文件,但它是1.5 GB,我無法再次在SQL Server Management Studio中打開它。

有沒有辦法導入它的Import data功能,或其他更聰明的方式來備份我的表的信息,然後再導入它,如果我需要它?

在此先感謝。

回答

3

我不太清楚,如果我理解你的要求(我不知道你是否需要導出你的數據到Excel或你想做某種備份)。

爲了從單個表中導出數據,您可以使用Bulk Copy Tool,它允許您從單個表導出數據並將其導出/導入到文件。您也可以使用自定義查詢來導出數據。

重要的是,這不會生成Excel文件,而是另一種格式。您可以使用它將數據從一個數據庫移動到另一個數據庫(在這兩種情況下都必須是MS SQL)。

實例: 創建格式文件:

bcp的[TABLE_TO_EXPORT]格式 「[EXPORT_FILE]」 -n -f 「[FORMAT_FILE]」 -S [SERVER] -E -T -a 65535

導出從一個表中的所有數據:

BCP [TABLE_TO_EXPORT]去 「[EXPORT_FILE]」 -f 「[FORMAT_FILE]」 -S [SERVER] -E -T -a 65535

導入先前導出的數據:

BCP [TABLE_TO_EXPORT]在[EXPORT_FILE]」 -f 「[FORMAT_FILE]」 -S [SERVER] -E -T -a 65535

我將輸出從導出/導入操作重定向到日誌文件(通過追加「> mylogfile.log」和命令的末尾) - 這有助於導出大量數據。

+0

感謝您的快速回復。我已閱讀關於BCP實用程序並啓用它。當我嘗試導出時,它對我說「拒絕訪問」。我已經閱讀過,如果你使用SA帳戶登錄,它應該可以工作,但我再次獲得「拒絕訪問」。你遇到過同樣的問題嗎? – gotqn 2012-07-06 07:28:08

+0

不幸的是,我不知道你的Useraccount在服務器上擁有的許可,也不知道數據庫的權限。這可能是導出文件/目錄上的Filepermission問題,或其他問題。你看看msdn鏈接嗎?也許你需要添加另一個選項到命令行(如用戶名/密碼 - 取決於你的配置)。如果這不起作用 - 也許你可以發佈更多的信息(確切的errormessage,你正在使用的命令等) – 2012-07-06 07:57:00

+0

是的,我已經看過槽的鏈接。我也使用用戶和密碼選項。我的帳戶是擁有完整權限的管理員。 – gotqn 2012-07-06 09:37:50

0

這裏又未BCP的一種方式:

  1. 出口的模式和數據文件中的

    • 使用SSMS嚮導 數據庫>> >>任務生成腳本... >>選擇表格>>選擇db模型和模式
    • 保存SQL文件(可能很大)
    • 將SQL文件轉移到其他服務器上
  2. 分割在幾個文件中

    • 使用像textfilesplitter一個程序來拆分在10個000行的文件以較小的文件的文件和分割數據(因此每個文件不是太大)
    • 將在同一文件夾中的所有文件,沒有別的
  3. 導入數據在第二服務器中

    • 在同一文件夾中創建一個.bat文件,名稱爲execFiles.bat
    • 您可能需要檢查表架構以禁用第一個文件中的標識,您可以在導入完成後添加該標識。
    • 這將執行所有文件對服務器的文件夾,並與數據庫中的-f定義Unicode文本編碼應當用來處理口音:

      for %%G in (*.sql) do sqlcmd /S ServerName /d DatabaseName -E -i"%%G" -f 65001 pause

相關問題