標題可能有點看不懂,因為不太確定怎麼下比較符合這個工具的主要作用。不過給一個情境應該就能夠比較了解。
有時候需要匯入資料的時候,可能會收到一個email清單,這個email清單需要匯入到DB裡面,如果是產生出匯入的sql語法請問會怎麼做呢?
如果這個email清單只有10筆,手刻sql語法問題還不大,但是如果有1000筆email呢?
在換個和程式開發比較相關的情境,假設SA開了一個清單告訴你這個class所需要的Property有什麼,請問如何快速的產生出這個property呢?
在這篇將會介紹,如何用NimbleText這個工具快速做到上面兩個情境的需求。
NimbleText介紹
NimbleText小檔案
- 官網:http://nimbletext.com/
- Live(線上版):http://nimbletext.com/Live
- Desktop: 直接下載
- 版本差異: http://nimbletext.com/Home/Professional
NimbleText這個工具作者給他的描述是:Manipulate text and data with light-weight patterns。
簡單來說,就是把清單資料依照自己定義的範本去產生出內容。
聽起來還是有點抽象,不過等一下有範例的時候就會比較清楚。
版本的差異
NimbleText有3個版本:
- Live - 線上版
- Desktop - 應用程式版
- Desktop + License - 應用程式版加買license
這個工具非常佛心,基本上Live和Desktop都是免費,只有進階功能才需要License。以我目前使用來說,其實Live就很夠用了。
使用介紹
這邊會介紹Live的版本。
整個畫面有3個部分:
- For each row in the list: 每一筆要被處理的資料
- Subsitute using this pattern:範本的內容
- Result:最後產生的結果
在「結果」的右邊部分,能夠設定每一筆資料的:
- column separator: 切割字
- row separtor: 斷行字
- insert: 預存的範本
最簡單的使用方式就是:
- 把要處理的資料丟到
For each row in the list
- 在
Subsitute using this pattern
調整結果的範本。可以使用$0
代表第一個切割欄位,以此類推 - 在
Result
把最後結果複製出來
使用情境1 - 依照清單產生出insert sql語法
這個情景是,有一個清單是insert的一部分值,例如要把每一個email都產生出一個insert sql語法。
假設,拿到的清單如下:
test@test.com
bbb@test.com
ccc@test.com
最後要匯入的sql語法是要到EpaperSubscribe
table裡面的email
欄位:
INSERT INTO EpaperSubscribe (email)
VALUES ('$0');
最後就可以把Result
複製出來在SSMS執行。
使用情境2 - 產生出class的property
假設SA開好class裡面所有的property名稱及形態,怎麼快速產生這些property?
假設得到的property類型和名稱清單如下:
int Id
string Name
DateTime CREATEDATE
要產生的property為public包含get及set的版本,範本會是:
public $0 <% $1.toPascalCase() %> { get; set;}
最後產生的結果就直接貼到C#的class裡面。
結語
如果沒有NimbleText要達到上面的功能,一般會使用類似RegEx搭配產生,但是實際上並不好寫。
透過使用NimbleText讓整個的操作上變得非常的簡單,並且透過把這些pattern記錄下來隨時都可以讓一樣資料結構產生出需要的結果。
如果有更好的工具及做法也歡迎大家留言給我。