はじめに
こんにちは、シルです。
企業のデータは、複数のシステムや異なるデータベースに分散していることが一般的です。
例えば:
- ECサイトの注文データは MySQL、顧客情報は PostgreSQL で管理
- CSVやExcelファイルに取引データが保存されている
- APIを通じて外部のデータを統合する必要がある
このような 「バラバラなデータ」 を統合し、一貫性を持った データ分析基盤 を構築するために、ETL(Extract, Transform, Load)プロセス を利用します。
参考までに…
SQLコマンド集:基本から応用
前回までの内容です
SQL#1 環境準備と基本操作
SQL#2 テーブルとデータベースの管理
SQL#3 ユーザー管理と権限の設定
SQL#4 サーバーステータスとインデックス管理
SQL#5 データベースのサイズ管理と構造確認
SQL#6 基本的なデータ操作
SQL#7 データ検索と削除の拡張
SQL#8 ウィンドウ関数を使ったデータ分析
SQL#9 集計と結合
SQL#10 インデックス管理と最適化
SQL#11 バックアップとリカバリ
SQL#12 データモデルの設計と正規化の実践
SQL#13 トリガーとストアドプロシージャの実践
SQL#14 高度なクエリ最適化とパフォーマンステスト
学習の概要
📌 含まれる内容
- データのインポート・エクスポート
- データ変換とクレンジング
- 異なるデータベース間のデータ移行
- データマッピングの設計
実践
データのインポート・エクスポート
まずは、データを MySQL に取り込む方法と、外部にエクスポートする方法を学びます。
例: CSV からデータをインポート
📂 CSVファイル (customers.csv)
CustomerID, Name, Email, City
1, Tanaka Taro, tanaka@example.com, Tokyo
2, Yamada Hanako, yamada@example.com, Osaka
📌 MySQL にインポート
LOAD DATA INFILE '/var/lib/mysql-files/customers.csv'
INTO TABLE Customers
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
✅ CSV のデータを MySQL の Customers テーブルに取り込み!
例: MySQL から CSV にエクスポート
SELECT * FROM Customers
INTO OUTFILE '/var/lib/mysql-files/customers_export.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
✅ データを外部ファイルに出力し、他のシステムで利用可能!
データ変換とクレンジング
データはそのまま使えないことが多く、重複や欠損データを整理(クレンジング) する必要があります。
例: 顧客情報の重複削除
DELETE c1 FROM Customers c1
JOIN Customers c2
ON c1.Email = c2.Email AND c1.CustomerID > c2.CustomerID;
✅ メールアドレスが重複している場合、古いデータを削除!
例: 住所情報のフォーマット統一
UPDATE Customers
SET City = 'Tokyo'
WHERE City IN ('tokyo', 'TOKYO', '東京都');
✅ 異なる表記(tokyo, TOKYO, 東京都)を統一!
異なるデータベース間のデータ移行
異なるデータベース間でデータを統合する方法を学びます。
例えば、PostgreSQL から MySQL にデータを移行 する場合を考えます。
例: PostgreSQL → MySQL へデータ移行
- PostgreSQL でデータを CSV にエクスポート
COPY Customers TO '/tmp/customers.csv' DELIMITER ',' CSV HEADER;
- MySQL にインポート
LOAD DATA INFILE '/tmp/customers.csv'
INTO TABLE Customers
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
✅ 異なるデータベースのデータを移行し、統合可能!
データマッピングの設計
異なるシステムのデータを統合するとき、「どの項目を、どのデータに対応させるか?」(データマッピング) を明確にする必要があります。
例: システム間のデータマッピング
| システムA(MySQL) | システムB(PostgreSQL) |
|---|---|
Customers.Name | Users.FullName |
Customers.Email | Users.EmailAddress |
Customers.City | Users.Location |
➡ 異なるデータベースの項目を統一して、統合処理をスムーズにする!
課題
実践課題
- 顧客情報を複数のシステムから統合し、分析用データベースを作成
- MySQL と PostgreSQL の顧客情報を統合
- CSV 形式のデータも取り込み、一元管理
- 重複データのクレンジングと整合性の維持
- 同じメールアドレスの顧客データを統合
- 住所表記の統一処理を実装
まとめ
✅ MySQL でデータのインポート・エクスポートを実施!
✅ データクレンジングを行い、データの品質を向上!
✅ 異なるデータベース間でのデータ移行を学び、システム統合の基盤を作成!
✅ データマッピングを設計し、統合データを整理!
ETL(Extract, Transform, Load)をマスターすることで、大規模データの管理やデータ分析基盤の構築がスムーズになります! 🚀



コメント