今天從客戶端拿到一份 Excel 文件,客戶整理出來希望我們將裡面的資料從資料庫中刪除,由於該資料是一連串的統一編號(Unique Key),而且客戶提供的資料都是一行一行的且有 500 筆之多,要如何才能快速轉換成可執行的 T-SQL 指令呢?當下我的腦子裡立即浮現多種解決方案,有 Notepad++ 的 正則表示式(Regular Expression),也有 Visual Studio 2010 的 區塊選取(Box Selection) 與 多行編輯(Multi-Line Editing) 功能功能,兩者都很容易,你要你熟悉工具的話都可以快速解決問題。
由於我們最後要產生的 T-SQL 長的像如下的樣子:
DELETE FROM [dbo].[Table1] WHERE [統一編號] IN ( '12345678', '87654321', ... )
所以我們要把 Excel 中的「統一編號」欄位的內容轉成如上 T-SQL 在 IN 字句中裡的格式:
方法一:將統一編號資料複製到 Notepad++ 裡,再利用 Regular Expression 做替換
方法二:將統一編號資料複製到 Visual Studio 2010 文字編輯區,再利用區塊選取功能做批次編輯
由於筆數眾多,區塊選取功能透過滑鼠操作比較沒效率(即按住 Alt 鍵不放再用滑鼠選取第一欄),我們改用純鍵盤操作。
先按下 Alt 與 Shift 鍵不放,然後按方向鍵的 ↓ 鍵 ( 我沒有要罵人的意思,別誤會 XD )
此時,Alt 鍵放開(注意: Shift 鍵還不要放),這時用右手來按 Ctrl + End 鍵,這時即可從頭選到尾,而且只選取每一列的第一個字元的位置,如下圖示:
這時我們按下一個 單引號 ( ‘ ) 即可在這數百行的統編最前面加上一個 單引號 ( ‘ )
接著我們按下 Ctrl + Home 回到第一列,並定位到第一列的最後一個字元,一樣重複著上述的動作
只是按下 Ctrl + End 鍵時會變成選取所有資料
這時 Shift 鍵還不要放,改用方向鍵移動到右邊欄位,變成下圖的樣子:
最後再按下 ‘, 即可完成批次編輯,最後再將最後一行多餘的無效行刪除即可
這時 T-SQL 的 IN 字句的內容已經編輯完成,這時再去 Management Studio 執行刪除命令即可!
結語
所以 Visual Studio 2010 的 區塊選取(Box Selection) 與 多行編輯(Multi-Line Editing) 功能不只可以拿來做程式碼編輯,用來當作一般文字的編輯也是很好用的工具,像我也經常使用 Visual Studio 的巨集來幫我快速處理一些大量文字編輯的工作。
相關連結