楽天、yahooなどの販売ページ用のcsvを編集する事が多いです。
今回はフリーソフトのsmooth csvでの僕の使い方をまとめました。
(sql処理を書きたくて記事にしました。そこまでの説明はざっくりです。)
##そもそもcsvとは
カンマで区切った値(Comma Separated Value)のことです。
excelでも編集できますが、値が変更される癖があるので専用のcsvソフトで編集したほうが良いです。
##ダウンロード
smooth csvをダウンロード。
javaが必要なため、それもダウンロード。
##smooth csvの良いところ
- excelのような見た目で使えます。
- データ量が多くても軽いです。
- 検索したときに、マーカーがつくのでわかりやすい。
- grepが使える(あまり使ってないけど)
- sqlが使える(selectのみ これが書きたくて記事を書きました。)
##よく使うショートカット
- 選択範囲を埋める ctrl + ALT + D
- 後ろの行を増やす ctrl+;
- 後ろの列を増やす ctrl+shift+;
- 行を削除 shift+D
- 列を削除 shift+ctrl+D
僕のPCは、ショートカットを別の動作に割り当ててる関係で
埋める処理だけ、編集→選択範囲を埋めるの流れになっています。
あとは、思った見た目でファイルが開いていない時は
ctrl+F5で開き方を指定できます。
##SQL処理
書きたかった事です。
select処理のみですが、よく使います。
僕の場合は、セール対象となったデータだけをかき集めたいときによく利用してます。
基本的な文
select * from csvtable('item.csv') where "2" = 'aaaa'
item.csvの2列目の値が、aaaaを集めろ。 出力列項目は全部にて。(*)
"2" = 'aaaa'の所は他にもこのような書き方もできます。
nullじゃないもの
"2" not null
頭に「なんとか」があって、aaがつくもの
"2" like '%aa'
%はワイルドカードです。
かっこで括った値で
"2" in ('aaaa','bbbb')
最後のかっこで括った処理は遅めで
出力結果が重複したり、バラバラになることがあったのでお勧めはしないです。
僕がここで使うのはunion allです。
selectを結合させて、結果を重ねる処理です。
select * from csvtable('item.csv') where "2" = 'aaaa'
union all
select * from csvtable('item.csv') where "2" ='bbbb'
こんな感じです。
2つのselect文をunion allで結合します。
出力結果は、持ってきたリストと同じ並びで出力してくれます。
もちろん手入力では大変なのでエクセルを使ってみましょう。
最初のunion all はいらないので消してください。
union all select~ aaaa
union all select~ bbbb
これを。
select~ aaaa
union all select~ bbbb
こう。
できた!と思ってもsqlに貼り付けると、不要な所にダブルクォーテーションがついてきます。
テキストエディタで置換をしてください。
##EXCELアドイン
置換が面倒なので、excelアドインを作ってみました。
動作保証はしかねます。
https://github.com/tensai-man/excel-sql
(初めてのgithub公開)
##補足
andも使えます。
例
select * from csvtable('item.csv')
where "4" like '%防水%' and "2" not like '%防水%'
4列目の商品説明文には「防水」と書いてて、
2列目の商品名に「防水」と書いていないもの 修正しなきゃ!
smooth csvは、selectだけなので確認用に。
更新updateも使いたくなったら、accessなど別のやり方で