ラベル CSV の投稿を表示しています。 すべての投稿を表示
ラベル CSV の投稿を表示しています。 すべての投稿を表示

2021年8月7日土曜日

SQLite3 CSVデータを取り込む、CSVデータを出力する (ver 3.32.0~)

概要

コマンドラインツールを使ってSQLiteのデータベースにCSVファイルのデータをインポート/エクスポートする方法。
自作のスクリプトでテキストを読込/出力したりDBに接続してinsert/selectをやるよりはるかに簡単。

CSVのフォーマットについて

CSVはRFCでフォーマットが定義されている。
RFCにはダブルクォートの取り扱いや改行コードなどについて記載されているので、一度は目を通しておくべき。
アプリケーションによって、対応していなかったり拡張されていたりするのでややこしい。

環境
  • Windows 10 64bit
  • SQLite3 (3.36.0) Command-Line Shell

CSVファイルを取り込む

CSVファイルをインポートするに当たっては以下のことに注意する。

  • CSVファイルは上記RFCに従って記述しておくのがベスト
  • インポート先として指定した名前のテーブルが存在しているかどうかで挙動が異なる。
既にテーブルがある
  • CSVの一行目はデータとして登録される。
    一行目が不要なら後述する「--skip」オプションを使うこと。
  • テーブルのカラム数とデータ型にCSVを合わせる必要がある。 合っていない場合、エラーになる。
テーブルがない
  • 指定したテーブル名で新しくテーブルが作られる。
  • CSVの一行目がカラム名になり、二行目以降がデータとして挿入される。
  • カラムのデータ型は全てTEXT型になる。
実行例
  1. sample.csvファイルをsample_tableとして取り込む。
    「--csv」オプションでCSVのフォーマットを認識してくれる。
  2. 「--skip 1」オプションでsample.csvファイルの1行目を無視する。
    ファイルにヘッダが含まれていて取り込まれたくない場合に使用する。
  3. 「-v」オプションで取り込みの詳細が出力される。
    下記の場合、CSVファイルからの入力が5行で、 新規挿入された行が4行、エラーは0件 と表示されている。

sqlite> -- # 1. 
sqlite> .import sample.csv sample_table --csv

sqlite> -- # 2.
sqlite> .import sample.csv sample_table --csv --skip 1

sqlite> -- # 3.
sqlite> .import sample.csv sample_table --csv --skip 1 -v
Added 4 rows with 0 errors using 5 lines of input
                    
「.import」コマンドのオプションが使えるのはver 3.32.0から

SQLite ver 3.32.0未満の環境でCSVデータを取り込む場合は、以下参照のこと。

CSVファイルを書き出す

手順は以下の実行例を参照のこと。 SQLiteコマンドラインツールのCSVをエクスポート機能には、以下の特徴がある。

  • RFCに従ってエスケープ処理をやってくれる。
  • 出力先に同名のファイルが存在していても、上書き確認はしてくれない。
  • .mode csv」 を利用し「.separator ,」は利用しないこと。
    「.separator ,」ではカンマやダブルクォーテーションがエスケープ処理されない。
実行例
  1. CSVモードに切り替え
  2. ヘッダ(カラム名)を一緒に出力する場合 「.headers on」にする
  3. 次に打ち込むコマンドの結果をresult.csvに出力
  4. 出力したいコマンドを実行する

sqlite> -- # 1. 
sqlite> .mode CSV

sqlite> -- # 2.
sqlite> .headers on

sqlite> -- # 3. 
sqlite> .once result.csv

sqlite> -- # 4.
sqlite> select * from sample_table;
                    

参考URL

2019年12月4日水曜日

SQLite 3 コマンドの実行結果の出力先を変更する「.excel」について

概要

SQLite3 のコマンドラインツールでコマンドやSQLの実行結果をCSVエディタで表示する方法。 CSVエディタはOSでCSVファイルに関連付けられたアプリケーションが起動する。

.once -x とほぼ同じ。

ヘルプの内容


sqlite> .help .excel
.excel         Display the output of next command in a spreadsheet
                    

.excel を実行してからSQLを実行すると、CSVエディタが起動して結果が表示される。 そこから編集したり保存しなおしたりできる。
sqliteの文字コードがutf-8のため、Microsoft Excelが起動した場合は文字化けしてしまう。

実行例

環境
  • Windows 10 64bit
  • SQLite3 ver.3.29.0

sqlite> .excel
sqlite> select * from sample_table;
                        

参考URL

2019年9月13日金曜日

SQLite3 CSVデータを取り込む、CSVデータを出力する(~ver 3.31.1)

概要

テキストデータであるCSVファイルをSQLite3に入力/出力させる方法。
コマンドラインツールから利用する。
自作のスクリプトでテキストを読込/出力したりDBに接続してinsert/selectをやるよりはるかに簡単。
取り込む処理をインポート/バルクロード、出力する処理をエクスポートと言ったりする。

Update!

SQLiteのver 3.32.0 からは「.import」コマンドにオプションが追加され、CSVファイルが取り込みやすくなった。 (「.mode」コマンドでCSVモードに変更しなくてもいい)

CSVのフォーマットについて

CSVはRFCでフォーマットが定義されている。
RFCにはダブルクォートの取り扱いや改行コードなどについて記載されているので、一度は目を通しておくべき。
アプリケーションによって、対応していなかったり拡張されていたりするのでややこしい。

環境
  • Windows 10 64bit
  • SQLite3 ver.3.29.0

CSVファイルを取り込む

CSVファイルをインポートするに当たっては以下のことに注意する。

  • CSVファイルは上記RFCに従って記述しておくのがベスト
  • インポート先として指定した名前のテーブルが存在しているかどうかで挙動が異なる。
既にテーブルがある
  • CSVの一行目はデータとして登録される。
    一行目が不要ならあらかじめ削除しておくこと。
  • テーブルのカラム数とデータ型にCSVを合わせる必要がある。
    合っていない場合、エラーになる。
テーブルがない
  • 指定したテーブル名で新しくテーブルが作られる。
  • CSVの一行目がカラム名になり、二行目以降がデータとして挿入される。
  • カラムのデータ型は全てTEXT型になる。
実行例
  1. CSVモードに切り替え
  2. sample.csv ファイルを sample_tableに挿入

sqlite> -- # 1.
sqlite> .mode csv
sqlite> -- # 2.
sqlite> .import sample.csv sample_table
                    

CSVファイルを書き出す

手順は以下の実行例を参照のこと。 SQLiteコマンドラインツールのCSVをエクスポート機能には、以下の特徴がある。

  • RFCに従ってエスケープ処理をやってくれる。
  • 出力先に同名のファイルが存在していても、上書き確認はしてくれない。
  • .mode csv」 を利用し「.separator ,」は利用しないこと。
    「.separator ,」ではカンマやダブルクォーテーションがエスケープ処理されない。
実行例
  1. CSVモードに切り替え
  2. 次に打ち込むコマンドの結果をresult.csvに出力
  3. 出力したいコマンドを実行する

sqlite> -- # 1. 
sqlite> .mode CSV
sqlite> -- # 2. 
sqlite> .once result.csv
sqlite> -- # 3.
sqlite> select * from sample_table;
                    

参考URL

2019年8月28日水曜日

サクラエディタでCSV, TSVファイルを開く

概要

CSV, TSVファイルをサクラエディタで見やすく表示させるための設定。

CSV対応

CSV用の設定を作成する。

  1. 設定
  2. タイプ別設定一覧
  3. 追加(A)
  4. 設定変更
「スクリーン」タブ
設定の名前(N) CSV
ファイル拡張子(X) csv
折り返し方法(<) 折り返さない
表示モード
(デフォルトが「通常」となっているコンボボックス)
CSV
「カラー」タブ
カーソル位置縦線 チェックをつける
偶数行の背景色 チェックをつける
半角空白 チェックをつける

TSV対応

TSV用の設定を作成する。
上記 CSV用の設定を流用します。

  1. 設定
  2. タイプ別設定一覧
  3. CSVの設定を選択して「複製(C)」
  4. 設定変更
設定の名前 TSV
ファイル拡張子 tsv
表示モード
(デフォルトが「通常」となっているコンボボックス)
TSV

あとは必要に応じて拡張子をサクラエディタに関連付ければいい。

矩形モードを利用する

Altキー + 矢印キー、もしくは Altキー + マウスでドラッグ することで テキストを矩形選択することが出来る。 これでカラム単位で編集が可能になるが、カンマやタブを削除しないよう注意すること。

操作してみるとわかるが、サクラエディタのCSV,TSVモードは「見やすくなる」程度の機能。
ダブルクォーテーションの取り扱いやエスケープ文字など非対応な要素がいくつかある。

CSV, TSVを編集するなら

純粋なCSVエディタとしては「cassava editor」が個人的には使いやすい。
余計な表計算式などを処理せず、純粋にテキストデータを編集できる。

次点でLibreOfficeのcalc

Microsoft Office Excel は色々余計な事をしてくれるのでCSVエディタとしては使いにくい。

参考URL