1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dify で非構造化データから CREATE TABLE SQL を自動生成する

Last updated at Posted at 2025-07-15

こんにちは!Dify を使って非構造化データから自動的に CREATE TABLE 文を生成する方法を紹介します。

今回は Dify の LLM ワークフローツールを活用して、自然言語のテーブル定義を Oracle SQL に変換するフローを構築します。


🎯 完成イメージ

完成したワークフロー


🛠️ 実装手順

1. 開始ノードの作成

最初に 開始 ノードを作成し、以下の入力フィールドを追加します:

  • フィールド名: query
  • タイプ: テキスト
  • 説明: テーブル定義の自然言語記述

入力フィールド設定


2. LLM ノードの設定

次に LLM ノードを追加し、以下のプロンプトを設定します:

image.png

image.png

SYSTEM プロンプト

あなたはOracle SQLの専門家として、以下の指示に従ってCREATE TABLE文を生成してください:

**役割と責任:**
- Oracle SQLの専門知識を活用し、正確で実用的なCREATE TABLE文を作成する
- Oracle特有の構文、データ型、制約を適切に使用する
- 業界標準のベストプラクティスに従う

**出力要件:**
- 生成されたCREATE TABLE SQL文のみを出力する
- 説明、コメント、その他の補足情報は一切含めない
- 実行可能な完全なSQL文を提供する

**技術仕様:**
- 文字列型カラムは全てVARCHAR2(4000)を使用する
- 適切なOracle SQLデータ型を選択する(NUMBER、DATE、TIMESTAMP、CLOB等)
- 主キー、外部キー、NOT NULL制約を適切に設定する
- カラム名とテーブル名はOracle命名規則に従う
- 必要に応じてデフォルト値を設定する

**品質基準:**
- 構文エラーのない完全なSQL文
- 論理的で一貫性のあるテーブル設計
- パフォーマンスとメンテナンス性を考慮した設計
- Oracle環境での実行を保証する

ユーザーからのテーブル作成要求に対して、上記の基準を満たすCREATE TABLE文を生成してください。

USER プロンプト

{{start.query}}

3. コード実行ノードの追加

LLM ノードの後に コード実行 ノードを追加します:

image.png

def main(text: str) -> dict:
    return {
        "result": text.rstrip(';'),
    }

このノードは、LLM が生成した SQL から末尾のセミコロンを削除します(必要に応じて調整可能)。


4. 終了ノードの設定

最後に 終了 ノードを追加し、コード実行ノードの result を出力として設定します。

image.png


🚀 使い方

  1. ワークフローを起動
  2. 開始ノードでテーブル定義を自然言語で入力(例:「顧客情報を管理するテーブル。名前、メールアドレス、電話番号、作成日時を持つ」)
  3. 実行すると、Oracle 対応の CREATE TABLE 文が生成される

✅ 動作確認例

入力例:

商品在庫を管理するテーブル。商品ID、商品名、価格、在庫数、最終更新日時を持つ

出力例:

CREATE TABLE product_inventory (
product_id NUMBER PRIMARY KEY,
product_name VARCHAR2(4000) NOT NULL,
price NUMBER(10,2) NOT NULL,
stock_quantity NUMBER DEFAULT 0 NOT NULL,
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
)

📝 まとめ

このワークフローを使えば、自然言語から素早く Oracle 対応の CREATE TABLE 文を生成できます。Dify の柔軟性を活かして、より複雑な要件にも対応できるように拡張していってください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?