新旧システムの移行や外部データの統合に欠かせないのがデータマイグレーションとETL(Extract, Transform, Load)処理です。
本章では、CSV/JSONデータの取り込み、データクレンジングの基本関数、そしてETL処理の設計・スケジューリングまで、実践的な内容をわかりやすく解説します。
CSV・JSONデータのインポート
まずは基本となるデータの取り込み。CSVやJSON形式のファイルは、外部システムとの連携やデータ移行に頻繁に使われます。
PostgreSQLでのCSVインポート
-- CSVファイルのインポート COPY users(id, name, email) FROM '/var/lib/postgresql/import/users.csv' DELIMITER ',' CSV HEADER;
CSV HEADER:1行目をカラム名として無視- 実行にはDBのファイルアクセス権限が必要
MySQLでのCSVインポート
LOAD DATA INFILE '/var/lib/mysql-files/users.csv' INTO TABLE users FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
PostgreSQLでのJSONデータの取り込み
-- JSON文字列をパースしてテーブルへ INSERT INTO users (name, email) SELECT data->>'name', data->>'email' FROM jsonb_array_elements('[{"name": "山田", "email": "yamada@example.com"}]'::jsonb) AS data;
JSONはNoSQL系のインターフェースとも相性が良く、柔軟な取り込みが可能です。
データクレンジングの基本(TRIM, CAST, REPLACE など)
取り込んだデータには、余分な空白や型の不整合、形式の違いなど、さまざまな“ノイズ”が含まれています。これを取り除くのがデータクレンジングです。
主な関数と使い方
| 関数 | 用途 | 例 |
|---|---|---|
| TRIM() | 前後の空白を除去 | TRIM(' 山田 太郎 ') → '山田 太郎' |
| CAST() | 型変換 | CAST('2025-10-01' AS DATE) |
| REPLACE() | 文字列の置換 | REPLACE(phone, '-', '') → 08012345678 |
| COALESCE() | NULLの代替 | COALESCE(email, 'noemail@example.com') |
活用例:CSVインポート後のクレンジング
-- 不正な電話番号を整形し、NULL補完する UPDATE users SET phone = COALESCE(REPLACE(TRIM(phone), '-', ''), '0000000000');
このように、整形処理はETLの「Transform」に該当し、データ品質を保つ上で非常に重要です。
ETL設計とスケジューリング
ETLとは、以下の3ステップで構成されるデータ処理プロセスです:
- Extract(抽出):外部データの取得
- Transform(変換):データクレンジング・整形
- Load(格納):データベース等にロード
シンプルなETL設計の流れ
- 外部からCSVを受け取る(FTP/S3など)
- 一時テーブルにインポート
- SQLで変換処理(TRIM、CASTなど)
- 本番テーブルにINSERT/UPDATE
この一連の処理は、シェルスクリプトやPython(pandas + sqlalchemy)で実装されることが多いです。
バッチ処理とcronスケジューリング
UNIX/Linux環境で定期実行するには、cronを使うのが一般的です。
# crontab -e に以下を追記(毎日午前3時に実行) 0 3 * * * /home/etl/scripts/import_csv.sh >> /var/log/etl.log 2>&1
また、最近では Apache Airflow や DBT(Data Build Tool) を使ったモダンなETLパイプライン構築も進んでいます。
ETL設計のポイント
- ジョブ失敗時のリカバリ(リトライ、通知)設計
- 処理ログの記録と監視(ログファイル or DBテーブル)
- 本番投入前にステージング環境で十分に検証
まとめ
データマイグレーションとETL設計は、単なる「移す作業」ではなく、信頼できるデータ基盤を構築する要です。
- CSV・JSONのインポート方法を押さえる
- TRIMやREPLACEなどを使ってデータクレンジング
- ETLプロセスをバッチ処理やcronで自動化し、定期実行
これらの知識を活かせば、あらゆるデータ連携・分析基盤の立ち上げをスムーズに進められるようになります。

