今天遇到一個自虐的需求 , user 給我一堆整理過的 excel 上面大概有 1x * 3 張表 , 想到要用手敲真的噁心
還好之前搞過 csvq 剛好拿來半自動化來降低錯誤率
遇到問題如下 , 有個 nullable 欄位決定 null or not null , 不過這個 csvq 會輸出 “not null” , 所以多寫個 case 騙他
另外兩個欄位相同時也會有問題 , 所以明確指定 alias 給他們 , 最後就是輸出希望類似 sql 的 format 方便做事 , 所以多補了個 tail
1  | create table xxx (  | 
1  | --手動在 csv 加上這段讓他有 header  | 
最後 output 指令如下 , 利用他輸出空白分隔並且不要有 header 即可創出類似 sql 的 format
美中不足的就是好像沒有複寫的結果的指令 , 需要自己去 rm , 不過也還可以接受啦!
1  | csvq -s .\statements.sql -f CSV -D " " --without-header -o result.txt  | 
後來有個情境要找一份 csv 裡面的編號 , 然後串成 sql 裡面的 in (‘xxx’ , ‘xxx’) 查詢 debug
這裡可以用 -D ‘,’ 然後 select 最後一個放 null 來欺騙他就搞定了
1  | csvq -o result.csv -D ',' -N -d '\t' -s sql.txt  | 
sql 沒想到竟然也可以用 cte , 還滿猛的阿
這裡要注意下 , 他是用雙管道 pipe 當成加號 , 如果要串單引號 ' 的話需要使用 4 個單引號
號碼做出來後記得要把最後一個逗號自己去尾
1  | with cte as (  |