🥏
スプレッドシートやエクセルのデータをSQLite形式でdbファイルにインポートする手順
最近Flutterでアプリを作るにあたりSQLiteでDBを用意したのですが、スプレッドシートに事前に入力しておいたデータをそのまま使いたかったのでそのやり方を記します。
前提情報
- スプレッドシートやエクセルから直接インポートするのはかなり面倒なのでCSVファイルにしておきましょう
- 既存のdbファイルにCSVデータを追記することは出来ません。新規でテーブルを作成する必要があります。
- 当方Mac PCのためそれに準じたやり方をご紹介しています。
1.dbファイルを作成&SQLへ接続
まずはコマンドライン(Macの場合ターミナル)を起動し、dbファイルを作成&同時にSQLに接続。
sqlite3 {任意のdbファイルまでのパス}/{任意のdbファイル名}.db
例)
sqlite3 /Users/taro/Documents/database.db
(成功するとコマンドライン上に sqlite>
と表示されるようになる。)
これでSQLへ接続すると同時に {任意のdbファイル名}.db` が新規作成される。
2.テーブル作成
新規にテーブルを作成。
create table {任意のテーブル名}(
{任意のカラム名} {任意の型},
{任意のカラム名} {任意の型},
{任意のカラム名} {任意の型} ...);
例)
create table myTable(
id integer,
name text,
imagePath text,
description text);
成功していれば、 .schema {任意のテーブル名}
で作成されたテーブルが表示されます。
3.CSVをインポート
.modeコマンドで表記をcsvに変更。
.mode csv
.importコマンドでインポートしたい対象のcsvファイルと、さっき作ったインポート先のテーブル名を指定。
.import {csvファイルへのパス} {さっき作ったテーブル名}
例)
.import /Users/taro/Documents/database.csv myTable
成功していれば、 SELECT * from {任意のテーブル名};
でインポートされたデータが一覧表示されます。
終わったら .quit
または ctrl + C
で接続を切りましょう。
余談
DB Browser for SQLite というデスクトップアプリのGUIがありまして、これを使うとdbファイルをアプリ上で見れます。
csvのインポート機能もあるようです。カラム数が少なければこっちのほうが楽にできそうです。
ちなみにFlutterアプリの場合、dbファイルにヘッダー情報などの余計なデータが入っていたり、データの型が完全一致してなかったりするとエラーを吐かずして何も表示されなくなるので要注意。
Discussion