← Все гайды

SQL в DBML: импорт DDL и ER-диаграмма существующей базы

· 2 мин чтения

DBML

Как построить ER-диаграмму по готовой базе: выгрузить DDL, импортировать CREATE TABLE в DBML (PostgreSQL, MySQL, SQL Server, Snowflake) и получить связи на диаграмме.

Чтобы разобраться в существующей базе, не нужно рисовать её заново: достаточно выгрузить DDL-скрипт и импортировать его — диаграмма построится сама.

Как импортировать

  1. Выгрузите DDL из базы: pg_dump --schema-only для PostgreSQL, mysqldump --no-data для MySQL, «Generate Scripts» в SQL Server Management Studio.
  2. Откройте редактор DBML и выберите Файл → Импорт из SQL… (или просто перетащите файл .sql в редактор).
  3. Выберите СУБД: PostgreSQL, MySQL, SQL Server или Snowflake.
  4. Вставьте DDL или нажмите Загрузить файл, затем Импортировать. Текущий код будет заменён результатом.
Окно импорта SQL в DBML с выбором СУБД
Импорт DDL: выбор СУБД и вставка скрипта

Что переносится

  • Таблицы, колонки, типы, первичные ключи, NOT NULL, UNIQUE, значения по умолчанию.
  • Внешние ключи — связи (ref) на диаграмме.
  • Индексы, перечисления (CREATE TYPE … AS ENUM в PostgreSQL), комментарии.

Если импорт не прошёл

Ошибка «Не удалось разобрать SQL» обычно означает, что в скрипте есть то, чего нет в DDL таблиц: функции, триггеры, процедуры, права, команды конкретного клиента (\connect, SET). Оставьте в скрипте только CREATE TABLE, ALTER TABLE … ADD CONSTRAINT, CREATE INDEX и CREATE TYPE.

После импорта

  • Расставьте таблицы на диаграмме мышью — расположение сохраняется вместе с документом.
  • Добавьте TableGroup для подсистем и заметки (Note) — диаграмма станет документацией.
  • Получите SQL для другой СУБД — «Генератор SQL из DBML»: так удобно переносить схему, например, с MySQL на PostgreSQL (проверьте типы — не все переводятся один к одному).

Пример

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  email VARCHAR(255) NOT NULL UNIQUE
);
CREATE TABLE orders (
  id SERIAL PRIMARY KEY,
  user_id INT NOT NULL REFERENCES users(id),
  total NUMERIC(12, 2)
);

После импорта (СУБД — PostgreSQL) получится DBML с таблицами users и orders и связью orders.user_id > users.id, а на диаграмме — две таблицы со стрелкой.

Вопросы и ответы

Как импортировать схему Oracle? Импорт поддерживает PostgreSQL, MySQL, SQL Server и Snowflake. DDL Oracle часто импортируется в режиме PostgreSQL после замены специфичных типов (VARCHAR2 → varchar, NUMBER → numeric).

База огромная — диаграмма нечитаема. Разбейте модель по подсистемам с TableGroup или импортируйте только нужные таблицы.