IT技術関連SQL

SQL#15 データ統合とETLプロセスの実践

SQL

はじめに

こんにちは、シルです。
企業のデータは、複数のシステムや異なるデータベースに分散していることが一般的です。
例えば:

  • 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 高度なクエリ最適化とパフォーマンステスト

学習の概要

📌 含まれる内容

  1. データのインポート・エクスポート
  2. データ変換とクレンジング
  3. 異なるデータベース間のデータ移行
  4. データマッピングの設計

実践

データのインポート・エクスポート

まずは、データを 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 へデータ移行

  1. PostgreSQL でデータを CSV にエクスポート
COPY Customers TO '/tmp/customers.csv' DELIMITER ',' CSV HEADER;
  1. 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.NameUsers.FullName
Customers.EmailUsers.EmailAddress
Customers.CityUsers.Location

異なるデータベースの項目を統一して、統合処理をスムーズにする!

課題

実践課題

  1. 顧客情報を複数のシステムから統合し、分析用データベースを作成
    • MySQL と PostgreSQL の顧客情報を統合
    • CSV 形式のデータも取り込み、一元管理
  2. 重複データのクレンジングと整合性の維持
    • 同じメールアドレスの顧客データを統合
    • 住所表記の統一処理を実装

まとめ

MySQL でデータのインポート・エクスポートを実施!
データクレンジングを行い、データの品質を向上!
異なるデータベース間でのデータ移行を学び、システム統合の基盤を作成!
データマッピングを設計し、統合データを整理!

ETL(Extract, Transform, Load)をマスターすることで、大規模データの管理やデータ分析基盤の構築がスムーズになります! 🚀

コメント

タイトルとURLをコピーしました