Neki SQL diff/comparer

Pozdrav raja, nisam se ni ja odavno javio, pa eo malo.
Prevrnuh internet trazeci nekakav dobar program koji bi mi usporedio dva sql filea iste baze, exportovani sa phpmyadmin. Znaci radi se o MySql. Zelim provjeravati ima li ikakvih izmjena u modelu, tipa nova kolona, promjena tipa i slicno, pa da mi ispljune neku alter skriptu koju samo importujem. Te skripte bi isle na Git ili SVN. Ne bih usporedjivao podatke, samo schemu i zelim sacuvati postojece podatke u bazi kada radim import. Zanima me jel itko ista slicno koristio i kakva su iskustva inace sa tim revizijama baza kad se radi u timu. Nije vazno ima je li GUI ili je komandna aplikacija.
Hvala unaprijed.

Ako ti radis export, mozda ti je lakse uradit XML dump sa mysqlom, XML ti je puno lakse uporedit a XML dump je lako uradit sa mysqldump.

[quote=Wizz]Pozdrav raja, nisam se ni ja odavno javio, pa eo malo.
Prevrnuh internet trazeci nekakav dobar program koji bi mi usporedio dva sql filea iste baze, exportovani sa phpmyadmin. Znaci radi se o MySql. Zelim provjeravati ima li ikakvih izmjena u modelu, tipa nova kolona, promjena tipa i slicno, pa da mi ispljune neku alter skriptu koju samo importujem. Te skripte bi isle na Git ili SVN. Ne bih usporedjivao podatke, samo schemu i zelim sacuvati postojece podatke u bazi kada radim import. Zanima me jel itko ista slicno koristio i kakva su iskustva inace sa tim revizijama baza kad se radi u timu. Nije vazno ima je li GUI ili je komandna aplikacija.
Hvala unaprijed.[/quote]

sam naziv teme nosi rjesenje tvog problema, dump bez podataka napravis pa onda diff inace komercijala kao toad mysql ima tu funkciju

Ne znam koliko ste me razumjeli. Nije mi potreban samo diff u create izrazima, nego trazim da mi taj alat skriptira izmjene. Npr imam 2 sql filea. Jedan izgleda ovako:

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

a drugi ovako

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Zelim neki alat koji mi moze usporediti ta dva izraza i izbaciti ovo

ALTER TABLE `test` ADD COLUMN `name` varchar(255) CHARACTER SET utf8 NOT NULL

koju samo importujem. Ima nas nekoliko u timu i schema je pozamasna. Usporedbu zelimo raditi na sql dump fileovima ili bilo kojim standardnim formatima za db schemu. Ako je najbolje sto mozemo raditi usporedba dvije baze mozemo ostati i na tome, mada bi bilo super ovo nekako automatizirati da ne moramo uvijek raditi drop-> create-> import-> compare-> execute.

Ja sam ovo trazio dugo vremena i moram rec da sam se napatio trazeci a nisam nas’o nista. Jednostavno je previse komplikovan zadatak da se takvo nesto napravi a nema prijeke potrebe. Treba ti za to:

a) SQL parser kompatibilan sa vrstom SQLa
b) cudo koje ce znat odradit diff kako treba
c) cudo koje ce znat napravit SQL patch kako treba

Ovo prvo i nekako, drugo i trece je vec malo tezi zadatak :slight_smile:

[quote=adioe3]Ja sam ovo trazio dugo vremena i moram rec da sam se napatio trazeci a nisam nas’o nista. Jednostavno je previse komplikovan zadatak da se takvo nesto napravi a nema prijeke potrebe. Treba ti za to:

a) SQL parser kompatibilan sa vrstom SQLa
b) cudo koje ce znat odradit diff kako treba
c) cudo koje ce znat napravit SQL patch kako treba

Ovo prvo i nekako, drugo i trece je vec malo tezi zadatak :)[/quote]
Znaci opet sam se samo okrenuo za 360. Pa dobro, mislim da se moze nesto sloziti. Alat koji radi logging query-a koji mijenja schemu pri izvrsavanju i revisioning sa alatom koji je nesto zapoceo sa dobrom idejom http://dbv.vizuina.com/
Ostavit cemo temu otvorenom.

[quote=adioe3]Ja sam ovo trazio dugo vremena i moram rec da sam se napatio trazeci a nisam nas’o nista. Jednostavno je previse komplikovan zadatak da se takvo nesto napravi a nema prijeke potrebe. Treba ti za to:

a) SQL parser kompatibilan sa vrstom SQLa
b) cudo koje ce znat odradit diff kako treba
c) cudo koje ce znat napravit SQL patch kako treba

Ovo prvo i nekako, drugo i trece je vec malo tezi zadatak :)[/quote]

nema potrebe :slight_smile: to sam i ja htjeo da kazem al reko treba nekad i od shutiti, naime koliko sam skuzio rijec je o vasoj aplikaciji i db i promjene radite u systemu “a” da bi iste prebacili u system “b”, valjda nekako te promjene i naravite na systemu “a” i drzite u nekom svn sve ostalo je strange db developing .)

za a, b, i c od adioe3 ima vec odavno mysqldiff koji to radi i moze ti pomoci, mada ja vise predlazem develop/test on system “a” > save in repo > transfer to system "b"
http://dev.mysql.com/doc/workbench/en/mysqldiff.html

Ja sam ovo trazio dok me zanimala cijela prica oko DB verzionisanja, otad sam naucio da fino stavljam semu u .sql i pisem SQL delta fajlove.

Ha nista onda. Ostaje po staroj metodi i gotovo.