データベース管理ツールとして、手軽に利用できるSQLite。
非常に様々な機能が詰まっているため、できればSQLiteのみで管理&開発していきたいところですが、
場合によっては、CSVなどの外部ファイルが必要になることがあると思います。(チームで開発しているときなど。)
そんなとき、CSVとSQLiteの連携方法として、この記事が参考になれば幸いです。
「SQLite → CSV」の出力
出力手順
- 1メニューの「File > Export」から「Table(s) as CSV file…」を選択。
- 2出力するテーブルを選択して「Save」を選択。
下にある出力オプションは必要に応じて変更してみてください。
- 3出力先を選択して「保存」を選択。
- 4Completedの画面が表示されると出力完了となります。
出力オプションについて
以下のように出力オプションを設定することで、出力結果を調整することができます。
項目名 | 内容 |
---|---|
Column names in first line | 列名を先頭に出力します。 |
Field separator | CSVの分割文字を指定できます。(CSVと言いつつ、TSVなども出力できるみたいですね) |
Quote character | 指定した文字を含む場合、文字として判断するためのエスケープ文字を指定します。 |
New line characters | 改行に使用する文字列を指定できます。 |
出力したCSVをエクセルで編集するとき
出力したCSVファイルをそのままエクセルで開くと、日本語が文字化けしてしまいます。
エクセルで開く際は「データ > テキストまたはCSVから」から読込してあげると、文字化けを回避することができます。

エクセルは「SJIS」や「UTF-8(BOM付き)」で記載されたCSVであれば正常に読込できます。
一方、エクスポートしたCSVファイルは「UTF-8」でエンコードされているため、日本語表記を正しく認識できず、文字化けしてしまいます。
「テキストまたはCSVから」でファイルを開く際も「UTF-8」が指定されているため読込ができるというわけです。
「CSV → SQLite」の取込
取込手順
- 1メニューの「File > Import」から「Table from CSV file…」を選択。
- 2取込元を選択して「開く」を選択。
- 3「Table name」指定して「OK」を選択。
下にある取込オプションは必要に応じて変更してみてください。
※同名のテーブルがある場合は、データの追加を行うか確認するメッセージが表示されます。問題がなければ「Yes」で次に進みます。
- 4Completedの画面が表示されると取込完了となります。
取込オプションについて
出力と同じように、取込にもいくつかのオプションを設定することができます。
項目名 | 内容 |
---|---|
Table name | 取込先のテーブル名を指定します。 |
Column names in first line | チェックを付与すると、先頭行を列名として認識します。 |
Field separator | 各列の分割文字を指定します。 |
Quote character | 指定した文字を含む場合、文字として判断するためのエスケープ文字を指定します。 |
Encoding | 改行に使用する文字列を指定します。 |
Trim fields? | チェックを付与すると、各値の前後の空白を除外します。 |
また、出力時とは違い、より高度な設定ができる「Advanced」の項目もあるようです。
項目名 | 内容 |
---|---|
Disable data type detection | チェックを付与すると、データ型の判断を自動で行わず、すべて入力値そのままで判断します。 |
Ignore default values | チェックを付与すると、値がなかった時にデフォルト指定値を設定せず、必ずNULLが入ります。 |
Fail on missing values | チェックを付与すると、必須列の値がなかったときにエラーとして判断します。エラーとなると、そこで取込は中断されます。 |
取込エラーの種類
取込方法によっては、以下のようにエラーとして判断されます。
エラーメッセージ | 内容 |
---|---|
![]() | キー項目が重複するような追加があるときに表示されます。 |
![]() | テーブルと取込ファイルの列が異なるときに表示されます。 |
エクセル等で作成したCSVを取込するとき

エクセル等で作成したCSVを取込するとき、文字コードの違いによって文字化けが起きてしまいます。しかし、これはバグではなく、取込するファイルに合わせて「Encoding」の指定を行うことで解消できます。
まとめ
多少の手間はかかりますが、CSVとSQLite間でデータの連携を行うことができました。CSVの方が使い勝手が良い時もあるので、用途に合わせて使い分けできるのはありがたいですね。
一番良いのは、SQLiteかCSVのどちらかで完結することですが…