von MySQL nach MSSQL


November 03, 2010 at 11:45
MySQL

Es ist das GRAUEN. Ich hatte eine MySQL Datenbank und sollte die in ein MSSQL Datenbank System übertragen. Natürlich klappt das nicht so ohne weiteres, eh klar. Da ich wenig Ahnung von MSSQL habe, hab ich mal improvisiert und dabei folgende Schritte ausgeführt:
  • Einen Datenbankexport in phpmyadmin ausgeführt. SQL-Kompatibilitätsmodus: MSSQL.
  • alle "IF NOT EXISTS" entfernt
  • MSSQL mag offensichtlich weder "unsigned" noch Größenangaben für int. Also aus int(10) -> int gemacht, alle unsigned ersatzlos rausgelöscht.
  • Foreign Keys mit einem Statement nach erstellen der Tabelle ersetzt:
ALTER TABLE "tabellenname"
ADD CONSTRAINT fk_name FOREIGN KEY(name_id)
REFERENCES tabelle2(id);
  • AUTO_INCREMENT=33 durch "id" int IDENTITY(33,1) NOT NULL ersetzt
  • Bei den INSERTS alle datetime Werte durch folgendes ersetzt: Convert (datetime,  '2010-10-18 16:33:52', 20)
Tadah! Und nach stundenlanger Bastelei schon hatte ich Tabellen mit Daten drin. Tragischerweise hab ich keine Ahnung, ob sich der Aufwand gelohnt hat, oder ich am Ende doch was falsch gemacht habe. Auf jeden Fall wurde aus
CREATE TABLE IF NOT EXISTS "articles" (
  "id" int(10) unsigned NOT NULL,
  "author_id" int(10) unsigned NOT NULL,
  "newsletter_id" int(10) unsigned NOT NULL,
  "title" varchar(45) default NULL,
  "content" text,
  "modified" datetime default NULL,
  "created" datetime default NULL,
  PRIMARY KEY  ("id"),
  KEY "fk_articles_authors" ("author_id"),
  KEY "fk_articles_newsletters1" ("newsletter_id")
) AUTO_INCREMENT=6 ;
am Ende
CREATE TABLE "articles" (
  "id" int IDENTITY(59,1) NOT NULL,
  "author_id" int NOT NULL,
  "title" varchar(45) default NULL,
  "content" text,
  "modified" datetime default NULL,
  "created" datetime default NULL,
  PRIMARY KEY  ("id")
);

ALTER TABLE "articles"
ADD CONSTRAINT fk_articles_authors FOREIGN KEY(author_id)
REFERENCES authors(id);
*schluchz*

Hinterlasse einen Kommentar:
Suche