サイトアイコン 朝吉システムズ

ChatGPTにSQLサンプルデータを作って貰う

SQL INSERT文形式の出力

今回のテーマ『ChatGPTはSQLも理解できる(複雑なのは試したことがないけれど)のでテーブル定義を与えて、名前や会社名、住所などをランダムに選んで作成して貰いたい』

最初から完成度の高いプロンプトを作成するのは難しいので試行錯誤を前提に計画してみます。
1.思い付くままにプロンプトを書いて実行してみる。
2.結果を元に改善を指示する。
3.1と2を繰り返す。
4.満足できる結果を出力するために必要なプロンプトをChatGPTに出力して貰う。

試行したプロンプトは次の通り

あなたは優秀なデータベースエンジニアです。
次のSQL文を解釈して、テーブルに挿入するサンプルデータを作成してください。
name には日本の俳優の名前をランダムに出力してください。
日本の俳優データは wikipedia をソースとして利用してください。
address は日本の市町村役所の所在地の郵便番号を利用してください。
zip は address から求めてください。
kisuu は 1から300までの数字をランダムに出力してください。
kisuu は1つ以上重複させてください。

CREATE TABLE sankasha_table (
id INTEGER PRIMARY KEY,
name CHAR(50),
corporate CHAR(100),
zip CHAR(7),
address CHAR(100),
kisuu INT,
memo TEXT
);
INSERT INTO sankasha_table (name, corporate, zip, address, kisuu, memo) VALUES

実行結果は次の通り

INSERT INTO sankasha_table (name, corporate, zip, address, kisuu, memo) VALUES
('相築あきこ', '株式会社サンプル', '530-0001', '日本', 212, 'Sample memo'),
('相田翔子', '株式会社サンプル', '231-0005', '日本', 32, 'Sample memo'),
('青木義朗', '株式会社サンプル', '730-8511', '日本', 10, 'Sample memo'),
('逢沢りな', '株式会社サンプル', '810-8620', '日本', 113, 'Sample memo'),
('愛染恭子', '株式会社サンプル', '810-8620', '日本', 264, 'Sample memo'),
('相原愛', '株式会社サンプル', '810-8620', '日本', 9, 'Sample memo'),
('愛耀子', '株式会社サンプル', '064-0941', '日本', 74, 'Sample memo'),
-- 以下、同様の形式でデータを挿入
('青木伸輔', '株式会社サンプル', '530-0001', '日本', 89, 'Sample memo');

試行錯誤

期待と異なり、会社名は全て同じだし、住所は日本になっているし、データの途中を省略されてしまっているのでこれを改善

ありがとうございます。
corporate はランダムに任意の会社名を作成してください。
address は日本の市役所の住所をランダムに当てはめてください。
zip は address の住所から求めてください。

少し改善されたかな。

INSERT INTO sankasha_table (name, corporate, zip, address, kisuu, memo) VALUES
('愛染恭子', '株式会社海浜開発', '079-1192', '赤平市泉町4-1', 228, 'Sample memo'),
('阿井美千子', '株式会社地平線', '079-1192', '赤平市泉町4-1', 300, 'Sample memo'),
('相川結', '株式会社中央工業', '079-1192', '赤平市泉町4-1', 274, 'Sample memo'),
('青木源太', '株式会社北星', '067-8674', '江別市高砂町6', 13, 'Sample memo'),
('愛川欽也', '株式会社南風', '077-8601', '留萌市幸町1-11', 276, 'Sample memo'),
('相葉雅紀', '株式会社空間設計', '053-8722', '苫小牧市旭町4-5-6', 231, 'Sample memo'),
-- 以下、同様の形式でデータを挿入
('藍とも子', '株式会社空間設計', '053-8722', '苫小牧市旭町4-5-6', 111, 'Sample memo');

同じ住所にも関わらずに会社名が異なるなど期待と異なる部分があるので更に改善

ありがとうございます。
address には都道府県の県庁所在地の住所をランダムに当てはめてください。
zip は同じレコードの address の住所が持つ郵便番号を当てはめてください。

実行結果

INSERT INTO sankasha_table (name, corporate, zip, address, kisuu, memo) VALUES
('相原巨典', '株式会社中央工業', '163-8001', '新宿区西新宿2-8-1', 75, 'Sample memo'),
('相原愛', '株式会社地平線', '930-8510', '富山市新桜町7-38', 289, 'Sample memo'),
('相沢まき', '株式会社北星', '060-8588', '札幌市中央区北三条西6丁目', 140, 'Sample memo'),
('青山一也', '株式会社北星', '010-8570', '秋田市山王中島町4-1', 295, 'Sample memo'),
('藍とも子', '株式会社北星', '310-8555', '水戸市笠原町978-6', 90, 'Sample memo'),
-- 以下、同様の形式でデータを挿入
('相原愛', '株式会社北星', '030-8570', '青森市長島1-1-1', 123, 'Sample memo');

会社名は架空だし、新宿区の郵便番号が 163-8001 なのかどうか疑わしいけれども、今回のサンプルデータの用途を考えるとこれ以上の品質は必要ない(必要だとすると住所から郵便番号を検索する必要がある)ので内容は良しとします。
あとは全行出力して欲しいので指示を付け加えます。

ありがとうございます。
上記のサンプルデータを20件、省略することなく全て出力してください。

実行結果がコレ

INSERT INTO sankasha_table (name, corporate, zip, address, kisuu, memo) VALUES 
('愛川欽也', '株式会社山手製作所', '960-8602', '福島市杉妻町2-16', 168, 'Sample memo'),
('哀川翔', '株式会社空間設計', '990-8570', '山形市松波2-8-1', 28, 'Sample memo'),
('相川勇気', '株式会社山手製作所', '990-8570', '山形市松波2-8-1', 246, 'Sample memo'),
('相島一之', '株式会社東雲', '960-8602', '福島市杉妻町2-16', 299, 'Sample memo'),
('相田周二', '株式会社中央工業', '010-8570', '秋田市山王中島町4-1', 176, 'Sample memo'),
('相葉裕樹', '株式会社北星', '020-8570', '盛岡市内丸10-1', 159, 'Sample memo'),
('相葉雅紀', '株式会社北星', '060-8588', '札幌市中央区北三条西6丁目', 249, 'Sample memo'),
('相原巨典', '株式会社南風', '960-8602', '福島市杉妻町2-16', 271, 'Sample memo'),
('あおい輝彦', '株式会社海浜開発', '060-8588', '札幌市中央区北三条西6丁目', 267, 'Sample memo'),
('青木伸輔', '株式会社中央工業', '320-8501', '宇都宮市塙町1-1', 110, 'Sample memo'),
('青木崇高', '株式会社中央工業', '990-8570', '山形市松波2-8-1', 159, 'Sample memo'),
('青木源太', '株式会社海浜開発', '990-8570', '山形市松波2-8-1', 24, 'Sample memo'),
('青木義朗', '株式会社山手製作所', '990-8570', '山形市松波2-8-1', 11, 'Sample memo'),
('青島幸男', '株式会社南風', '010-8570', '秋田市山王中島町4-1', 281, 'Sample memo'),
('青柳翔', '株式会社空間設計', '371-8570', '前橋市大手町1-1-1', 131, 'Sample memo'),
('青山一也', '株式会社海浜開発', '310-8555', '水戸市笠原町978-6', 269, 'Sample memo'),
('藍とも子', '株式会社中央工業', '371-8570', '前橋市大手町1-1-1', 187, 'Sample memo'),
('阿井美千子', '株式会社空間設計', '310-8555', '水戸市笠原町978-6', 35, 'Sample memo'),
('愛耀子', '株式会社東雲', '990-8570', '山形市松波2-8-1', 17, 'Sample memo'),
('愛華みれ', '株式会社地平線', '010-8570', '秋田市山王中島町4-1', 12, 'Sample memo');

プロンプトをChatGPTに教えて貰う

次に使うときに簡単に必要な結果を得られるようにプロンプトを出力しておきます。

ありがとうございます。
上記出力を得るためのプロンプトを出力してください。

出力されたプロンプト

都道府県の県庁所在地の住所とその郵便番号を含む20件のデータセットを作成してください。各レコードには、ランダムに選ばれた重複しない日本の俳優または女優の名前、ランダムに選ばれた架空の会社名、選択された住所の郵便番号、住所、1から300の範囲でランダムに選ばれた数値(kisuu)、および固定のメモ文('Sample memo')を含めてください。データはSQLのINSERT文の形式で提供してください。

シンプルになりました。
これだけの指示で良かったんですね。
「kisuu は1つ以上重複させてください。」を忘れてますね、ChatGPT君
ランダムと指示すると重複が含まれる場合がありますね。
正確に指示するのは難しいです。
出力結果が途中で切れてしまったときは「続けて」と入力すると出力を継続してくれます。

モバイルバージョンを終了