有時候想要把現有的資料庫裡面的data傳遞給別人,但是又不想要把整個資料庫都給對方,這個時候給對方insert data的sql檔案是最快的。
但是,如果要自己手寫這個sql語法,如果只有1~2筆還好,但是如果有幾十筆呢?
如果不想要產生整個Table的資料,而是只有符合某些特定條件的才要,那麽要一筆一筆弄也太累了。
有沒有什麽工具可以使用讓這件事情變成只需要幾秒鐘就可以做到的呢?
這篇介紹一下兩種情景的產生方式?
快速從現有資料庫Table產生出insert 資料的 sql
有兩種方式可以用:
- 當想要把整個Table資料變成insert sql - 可以使用 SQL Server Management Studio (SSMS)
- 如果想要Table的某些條件的資料變成insert sql - 可以使用Visual Studio裡面的SQL Server Data Tools (SSDT)
使用SSMS匯出整個Table的資料為insert sql
SSMS内建可以產生出某一個table的所有資料為insert語法,只需要透過Generate Script
的語法即可。
SSMS可以透過這邊傳送門下載的到
- 對Table所在的DB點【右鍵】 -> 【Tasks】 -> 【Generate Scripts...】
- 選取要匯出的table
-
這邊看需求,以這邊例子想匯出
Address
這個table - 設定要產生的script為Data Only
- 先選擇
Advanced
的按鈕 - 找到
Type of data to script
- 選擇Data Only
- 先選擇
- 檢查最後匯出結果
透過SSMS可以快速匯出資料的insert sql,但是有個很大的問題是這個是所有的資料。
如果說資料很多,但是只希望裡面資料的某一些條件的資料怎麽辦?
透過Visual Studio的SSDT產生符合條件的sql insert語法
上面SSMS的最大問題是沒有辦法對要產生的資料先做過濾。假設今天的需求是只產生出地址在加拿大
的怎麽辦?
如果有這種需求,就可以使用VS搭配SST做到。
SSDT好像預設會裝,如果沒有的話,可以透過重新呼叫VS的安裝檔案,然後透過Modify方式選擇SSDT。
- 開啓Server Explorer加入DB的連線
開啓Server Explorer然後加入一個到DB的connection:
如果找不到Server Explorer,可以透過右上角的輸入框來搜索找到。-
透過
Show Table Data
進入顯示所有資料的畫面 -
展開上面設定的連線,對要匯出的table點選【右鍵】,然後選擇
Show Table Data
: - 設定搜索條件
- 點選上面漏斗的Icon - 代表filter條件
- 設定要過濾的條件 - 這邊是對
CountryRegion
這個欄位過濾Canada
- 按下OK出發過濾
- 選擇Script把結果產生成爲sql
當按下OK之後,資料會被依照條件過濾,這個時候可以兩種方式產生為insert sql語法:
- 第一個檔案的icon是
Script
,把sql直接用另外一個頁簽呈現 - 第二個檔案的icon是
script to file
,把sql產生到檔案
- 第一個檔案的icon是
結語
以上就是兩種快速產生資料insert sql的方式。
理論上這篇提到的兩個工具作爲.NET的工程師應該都會裝,因此應該不需要額外在裝什麽。
不過如果有更好的工具也歡迎下面留言分享。