CodeGym /コース /SQL SELF /データ一括インポート入門

データ一括インポート入門

SQL SELF
レベル 23 , レッスン 0
使用可能

例えば、他のデータベースや外部アプリから学生情報が入ったCSVファイルが送られてきたとしよう。1件ずつ手でコピペ?いや、それは勘弁。ここでデータ一括インポートの出番だよ。

こんな場面で一括インポートが救世主になる:

  • データ移行: あるシステムから別のシステムにデータを移したいとき。例えばExcelや他のDBからPostgreSQLへ。
  • データベース初期化: 最初のデータを入れるとき。例えば都市リスト、コース一覧、商品カテゴリなど。
  • 外部システムとの連携: 定期的に新しいデータを追加したいとき。例えば外部ファイル経由でデータを更新する場合。
  • 大量データの更新: 古いデータを新しいものに置き換えたいとき。

ここまで大丈夫?OKなら次いこう!

データ一括インポートの主なやり方

細かい話に入る前に、そもそもどうやって大量のデータをDBに入れるのかざっくり見てみよう。SQLクエリでやる方法と、もっと便利なファイルからのインポート方法を紹介するよ。

データ挿入用SQLクエリ

データ追加にはINSERT INTOコマンドを使うって、もう知ってるよね。少ない件数ならこれでOK。例えば:

INSERT INTO students (id, name, age, course)
VALUES (1, 'Otto Lin', 20, 'プログラミング');

でも、何十件、何百件、何千件もあると、このやり方は効率悪すぎ。もちろんコードで自動化もできるけど、手作業でやるのは無理ゲーだし面倒。

ファイルからのインポート

だからこそ、CSV(Comma-Separated Values)みたいなファイルからのインポートがよく使われる。これはシンプルなテキスト形式で、1行が1レコード、値はカンマやセミコロンで区切られてる。

CSVファイルの例:

id,name,age,course
1,Otto Lin,20,プログラミング
2,Maria Chi,21,デザイン
3,Alex Ming,19,数学

この形式は人間にもプログラムにも読みやすい。CSVはExcelで開けるし、Pythonとか他の言語でも処理できるし、DBへのインポートも楽勝。ファイルからの一括インポートは手作業より圧倒的に速いし、入力ミスも減るよ。

一括インポートの準備

成功のカギは準備にあり。DBをデータ受け入れOKな状態にして、テーブル構造やデータの正しさをチェックしよう。

テーブル構造のチェック

まずは、ファイルの構造に合ったテーブルがDBにあるか確認しよう。例えば学生データを入れるなら、対応するカラムがあるテーブルが必要。

学生データ用テーブルの例:

CREATE TABLE students (
    id SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER NOT NULL,
    course TEXT
);

ポイント:

  • カラムのデータ型がファイルのデータと合ってるか確認。ageが数字なら、CSVのそのカラムも数字だけにしよう。
  • 制約付きカラム(NOT NULLUNIQUE)は特にデータ準備をしっかり。

データのチェック

次はデータ自体のチェック。インポート前にこれを見ておこう:

  1. 空行や変な値がないか。 例えば12,,20,プログラミングみたいな行はエラーになる。nameは必須だからね。
  1. 区切り文字の確認。 CSVでカンマ(,)を使ってるなら、ちゃんと設定しよう。セミコロン(;)なら、インポート時にそれを指定する必要があるよ。

  2. 文字コード。 PostgreSQLはUTF-8を期待してる。他のエンコーディング(例:Windows-1251)なら変換しよう。

プログラマー向け小ネタ

なんでプログラマーはCSVが好きなの?JSONで苦しんだ後、やっと「シンプル」なデータに出会えるからさ…でもテキスト中のカンマに出会うまではね。

一括インポートの実践例

実際のプロジェクトでも一括インポートはよく使われる。例えば:

  • ネットショップの商品カタログ更新。何千件もあるCSVを一瞬でインポートできる。
  • CRMシステム間で顧客データを移行。顧客情報や住所、注文履歴をCSVからPostgreSQLへ。
  • 分析用に1ヶ月分の売上データをインポート。

これでなんで一括インポートが必要なのか、どう準備するのか分かったよね。次は具体的なインポートツール、例えばCOPYコマンドについて見ていこう。これは次のレクチャーで!

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION