複数の関連テーブルを一度にシードする

単一のSQLスキーマから複数の相互接続されたテーブルのINSERT文を生成します。複数のCREATE TABLE文の貼り付け方法を学びます。

Use Cases

詳細な説明

複数テーブルのシード生成

実際のアプリケーションには相互接続されたテーブルがあります。シードジェネレーターは複数のCREATE TABLE文を受け付け、単一の操作ですべてのシードデータを生成します。

複数テーブルスキーマの例

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE,
  email VARCHAR(255) NOT NULL UNIQUE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE categories (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  description TEXT
);

CREATE TABLE posts (
  id SERIAL PRIMARY KEY,
  title VARCHAR(200) NOT NULL,
  body TEXT,
  author_id INTEGER NOT NULL REFERENCES users(id),
  category_id INTEGER REFERENCES categories(id),
  published BOOLEAN DEFAULT FALSE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE comments (
  id SERIAL PRIMARY KEY,
  post_id INTEGER NOT NULL REFERENCES posts(id),
  user_id INTEGER NOT NULL REFERENCES users(id),
  body TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

出力順序

ジェネレーターは入力にテーブルが現れる順序でINSERT文を生成します。参照整合性のために、親テーブルを先に貼り付けてください

  1. users(依存関係なし)
  2. categories(依存関係なし)
  3. posts(users、categoriesに依存)
  4. comments(posts、usersに依存)

JSON複数テーブル出力

JSON形式では、テーブル名をキーとする単一オブジェクトが出力されます:

{
  "users": [ ... 10オブジェクト ... ],
  "categories": [ ... 10オブジェクト ... ],
  "posts": [ ... 10オブジェクト ... ],
  "comments": [ ... 10オブジェクト ... ]
}

CSV複数テーブル出力

CSV形式では、各テーブルはコメントヘッダーで区切られます:

# Table: users
id,username,email,created_at
...

# Table: categories
id,name,description
...

行数はすべてのテーブルに適用

行数スライダーはすべてのテーブルに均一に適用されます。50行に設定すると、すべてのテーブルが50行を取得します。親テーブルが子テーブルより少ない行を持つべきスキーマの場合、異なる行数で別々に生成することをお勧めします。

ユースケース

ユーザー、カテゴリ、投稿、コメントを持つブログプラットフォームを構築しています。完全なコンテンツ階層をテストできる開発データベースを素早くセットアップするために、単一の操作で4つすべてのテーブルにテストデータを投入する必要があります。

試してみる — Database Seed Generator

フルツールを開く