Il est possible de générer du code SQL DDL (Data Definition Language) à partir de fichiers DBML.
Les développeurs de DBML proposent un outil en ligne de commande pour :
- générer du code SQL DDL à partir de fichiers DBML.
- générer des fichiers DBML à partir de bases de données existantes.
Installation
- Ouvrez un terminal à la racine de votre projet.
- Assurez-vous que
Node.js
etnpm
sont installés sur votre machine :
node -v# v22.8.0
npm -v# 10.8.2
Si Node.js n’est pas installé, téléchargez et installez-le depuis https://nodejs.org/ (npm est généralement installé avec Node.js).
- Si ce n’est pas déjà fait, toujours à la racine de votre projet, initialisez un projet Node.js :
npm init -y
- Installez l’outil CLI de DBML :
npm install @dbml/cli
Utilisation
Pour générer le code SQL DDL à partir d’un fichier DBML, utilisez la commande dbml2sql
suivie du nom du fichier DBML, puis d’un nom de fichier de sortie précédé de l’option -o
:
npx dbml2sql boutique-schema.dbml -o boutique-schema.sql
Si on souhaite cibler MySQL plutôt que Postgres, on peut ajouter l’option --mysql
:
npx dbml2sql boutique-schema.dbml -o boutique-schema.sql --mysql
Résultat :
-- SQL dump generated using DBML (dbml.dbdiagram.io)-- Database: MySQL-- Generated at: 2025-02-13T08:41:01.102Z
CREATE TABLE `Client` ( `id` int PRIMARY KEY AUTO_INCREMENT COMMENT 'Identifiant unique du client', `nom` varchar(255) UNIQUE NOT NULL COMMENT 'Nom du client', `adresse` text COMMENT 'Adresse du client');
CREATE TABLE `Commande` ( `id` int PRIMARY KEY AUTO_INCREMENT COMMENT 'Identifiant unique de la commande', `date` date DEFAULT (now()) COMMENT 'Date de la commande au format YYYY-MM-DD HH:MM:SS', `client_id` int COMMENT 'Identifiant du client');
CREATE TABLE `CommandeDetail` ( `commande_id` int COMMENT 'Identifiant de la commande', `produit_id` int COMMENT 'Identifiant du produit', `quantite` int DEFAULT 1 COMMENT 'Quantité de produit', PRIMARY KEY (`commande_id`, `produit_id`));
CREATE TABLE `Produit` ( `id` int PRIMARY KEY AUTO_INCREMENT COMMENT 'Identifiant unique du produit', `label` varchar(255) UNIQUE NOT NULL COMMENT 'Nom du produit', `description` text NOT NULL COMMENT 'Description du produit', `prix` decimal DEFAULT 1 COMMENT 'Prix unitaire du produit, en euros, avec 2 chiffres après la virgule, ex: 12.34, doit être >= 0');
ALTER TABLE `Commande` ADD FOREIGN KEY (`client_id`) REFERENCES `Client` (`id`);
ALTER TABLE `CommandeDetail` ADD FOREIGN KEY (`commande_id`) REFERENCES `Commande` (`id`);
ALTER TABLE `CommandeDetail` ADD FOREIGN KEY (`produit_id`) REFERENCES `Produit` (`id`);
Importation dans un SGBD
MySQL
Dans un terminal, connectez-vous à votre SGBD MySQL (Pensez à remplacer root
par votre nom d’utilisateur si besoin) :
mysql -u root -p
Suppression et création de la base de données
Supprimez la base de données si elle existe déjà :
DROP DATABASE IF EXISTS boutique;
Créez une base de données :
CREATE DATABASE boutique;
Sélectionnez la base de données :
USE boutique;
Quitter le client MySQL :
exit;
Importation du fichier SQL
Commandes générales
Pour importer des fichiers SQL directement dans une base de données MySQL, on pourra utiliser les commandes suivantes :
Pour Linux et MacOS :
mysql -u[username] -h[localhost] -p [database-name] < my-database.sql
Pour Windows, dans un terminal PowerShell :
type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]
Commandes pour la base de données boutique
Importez le fichier SQL (encore une fois, pensez à remplacer root
par votre nom d’utilisateur si besoin) :
Sur Linux et MacOS :
mysql -u root -p boutique < boutique-schema.sql
Sur Windows, dans un terminal PowerShell :
type boutique-schema.sql | mysql -u root -p boutique
Conclusion
Vous avez maintenant généré du code SQL DDL à partir d’un fichier DBML et importé ce code dans votre SGBD.
Dans la prochaine section, nous allons nous connecter à la base de données et explorer son contenu.