データマイグレーションとETL設計入門

新旧システムの移行や外部データの統合に欠かせないのがデータマイグレーション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設計の流れ

  1. 外部からCSVを受け取る(FTP/S3など)
  2. 一時テーブルにインポート
  3. SQLで変換処理(TRIM、CASTなど)
  4. 本番テーブルに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 AirflowDBT(Data Build Tool) を使ったモダンなETLパイプライン構築も進んでいます。

ETL設計のポイント

  • ジョブ失敗時のリカバリ(リトライ、通知)設計
  • 処理ログの記録と監視(ログファイル or DBテーブル)
  • 本番投入前にステージング環境で十分に検証

まとめ

データマイグレーションとETL設計は、単なる「移す作業」ではなく、信頼できるデータ基盤を構築する要です。

  • CSV・JSONのインポート方法を押さえる
  • TRIMやREPLACEなどを使ってデータクレンジング
  • ETLプロセスをバッチ処理やcronで自動化し、定期実行

これらの知識を活かせば、あらゆるデータ連携・分析基盤の立ち上げをスムーズに進められるようになります。

採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com
お問い合わせ