將資料表內容轉成一連串 INSERT 語法,是蠻好用的跨伺服器搬資料表招式,之前我最愛用的工具是 SQL Dumper,但昨天聽到不幸消息:官方網站人去樓空,連註冊的 DNS 網域都已棄守。

重新尋找替代方案,找到三種做法:

  1. SSMS 內建 Generate Script 功能


    接著透過 Wizard 介面指定資料表並設定只輸出資料(Types of data to script: Data only)



    由於當初設計可搬移整個 DB,故介面跟選項有點繁瑣,另外無法自訂查詢條件是一大缺點。
  2. SSMS Tools Pack
    SQL Server Management Studio 的外掛套件,有不少方便的輔助功能,包含 Insert Statement Generator,功能挺強大,為付費軟體。
  3. SQL Server Data Tools in VS2015+
    SSDT 是整合在 Visual Studio 2015+ 內的資料庫工具,可用於建置 SQL Server 關聯式資料庫、Azure SQL Database、Integration Services 封裝、Analysis Services 資料模型以及 Reporting Services 報表。SSDT 的資料表檢視工具有產生 INSERT 指令功能,這裡簡短示範:

在 Visual Studio 開啟 Server Explorer 視窗,在 Data Connections 清單建立資料庫連線,選擇要匯出資料的資料表透過右鍵選單選取「Show Table Data」:

資料檢視區上方工具列有兩個卷軸圖示,左邊的是產生 Script 並編輯,右邊則是直接匯出成檔案:

點選 Script 即可產生逐筆資料的 INSERT INTO 指令囉~(Script 還包含停用及啟用自動跳號,蠻貼心的)

支援簡單的 Filter 查詢條件,預設只顯示前 1000 筆,實務上可依需求調整。

經簡單試用,SSDT 的 INSERT Script 產生功能雖不及 SQL Dumper 簡潔方便,亦不失為可用的替代方案。


Comments

# by oaww

弱弱的問一下,用DB Link會不會比較快,還是因為不能用DB Link才會用SQL Script新增。

# by Jeffrey

to oaww, 哈,是的。有頭髮誰願意當秃子 :P 原則上建議優先使用 DB Link 或 Linked Server,但實務上 Linked Server 可能因網路未相接、權限不足、資安規定、執行權責… 等諸多因素無法建立, INSERT Script 可在各種惡劣狀況下達成使命,同時也方便歸檔存查,有一些不可取代的優勢。

Post a comment