🥏

スプレッドシートやエクセルのデータをSQLite形式でdbファイルにインポートする手順

2022/03/03に公開

最近Flutterでアプリを作るにあたりSQLiteでDBを用意したのですが、スプレッドシートに事前に入力しておいたデータをそのまま使いたかったのでそのやり方を記します。

前提情報

  1. スプレッドシートやエクセルから直接インポートするのはかなり面倒なのでCSVファイルにしておきましょう
  2. 既存のdbファイルにCSVデータを追記することは出来ません。新規でテーブルを作成する必要があります。
  3. 当方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