SQLからECサイト注文データを抽出する
商品と注文テーブルを持つリアルなECデータベースをCSVに変換します。複数テーブル、外部キー、混合データ型の処理を実演します。
Complex Queries
詳細な説明
ECサイトデータの抽出
実際のSQLダンプには、複数の関連テーブルが含まれていることがよくあります。この例では、商品と注文を持つ典型的なECデータベーススキーマから注文データを抽出する方法を示します。
SQLの例
CREATE TABLE products (
id INTEGER PRIMARY KEY,
sku VARCHAR(20) NOT NULL,
name VARCHAR(200) NOT NULL,
price DECIMAL(10,2) NOT NULL,
weight_kg FLOAT
);
INSERT INTO products (id, sku, name, price, weight_kg) VALUES
(1, 'ELEC-001', 'Wireless Bluetooth Headphones', 79.99, 0.25),
(2, 'ELEC-002', 'USB-C Charging Cable (2m)', 12.99, 0.05),
(3, 'HOME-001', 'Stainless Steel Water Bottle', 24.95, 0.35),
(4, 'ELEC-003', 'Portable Power Bank 10000mAh', 39.99, 0.22);
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
order_number VARCHAR(20) NOT NULL,
customer_email VARCHAR(255) NOT NULL,
product_id INTEGER REFERENCES products(id),
quantity INTEGER NOT NULL DEFAULT 1,
total_amount DECIMAL(10,2) NOT NULL,
order_date TIMESTAMP NOT NULL,
status VARCHAR(20) DEFAULT 'pending'
);
INSERT INTO orders VALUES
(1, 'ORD-2024-001', 'alice@example.com', 1, 2, 159.98, '2024-01-15 10:30:00', 'shipped'),
(2, 'ORD-2024-002', 'bob@example.com', 2, 5, 64.95, '2024-01-15 14:22:00', 'delivered'),
(3, 'ORD-2024-003', 'alice@example.com', 3, 1, 24.95, '2024-01-16 09:05:00', 'pending'),
(4, 'ORD-2024-004', 'charlie@example.com', 4, 1, 39.99, '2024-01-16 16:45:00', 'shipped');
主要な抽出ポイント
このSQLには2つのテーブルが含まれているため、ツールはINSERT文からデータを抽出します。最初のINSERTは商品CSVを、2番目は注文を生成します。情報バーに検出されたテーブルが表示されます。
関連テーブルの処理
ツールは各INSERT文を独立して抽出します。JOINの実行や外部キー参照の解決は行いません。関連データを結合する必要がある場合:
- 各テーブルを個別のCSVに抽出(一度に1つを処理)
- スプレッドシートのVLOOKUPやpandasなどのツールでデータを結合
- または事前にSQL JOINクエリを記述し、結合結果を変換
ユースケース
分析プラットフォーム、CRMシステムへのインポート、または新しいデータベースへの移行のために、ECデータベースダンプから商品カタログと注文履歴を抽出する。