程式狂想筆記

一個攻城師奮鬥史

0%

快速產生資料表 alter table 語法 schemalex

常常我們在測試 DB 環境
不會馬上上到正式環境
但都是分開改 alter table
之前有在 Dbeaver 有 migrate table 功能
但大致上我們工程師沒有 DB 的權限
要如何快速產生 alter table 語法呢?

其實之前有寫過 MySQL 比較兩個資料庫方法 | 程式狂想筆記
但一樣沒有產生 alter table sql 語法…
裡面的範例也沒有使用過
今天我發現 github 裡面有一個 schemalex
可以輕鬆產生 alter table 語法

schemalex

schemalex/schemalex: Generate difference sql of two mysql schema

1
2
3
4
5
-- old.sql
CREATE TABLE hoge (
id INTEGER NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
);
1
2
3
4
5
6
7
8
9
10
11
-- new.sql
CREATE TABLE hoge (
id INTEGER NOT NULL AUTO_INCREMENT,
c VARCHAR (20) NOT NULL DEFAULT "hoge",
PRIMARY KEY (id)
);

CREATE TABLE fuga (
id INTEGER NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
);

schemalex old.sql new.sql

就會印出 Alter table SQL

好處只要用phpmyadmin 匯出 create table 就可以完成!!
更多用法可以參考官網文件schemalex/schemalex: Generate difference sql of two mysql schema

快速產生 create sql 語法

1
SHOW CREATE TABLE tbl_name

相關查詢資料:
MySQL :: MySQL 8.0 Reference Manual :: 13.7.7.10 SHOW CREATE TABLE Statement
Go言語のデータベース用のライブラリを比較する - Koichi Ishida blog
schemalex/git-schemalex: database migration tool for mysql schema is managed via git
k0kubun/sqldef: Idempotent MySQL/PostgreSQL schema management by SQL
rubenv/sql-migrate: SQL schema migration tool for Go.
如何快速比對資料庫結構差異並產生同步指令 - Yowko’s Notes
SchemaCrawler - Free database schema discovery and comprehension tool