von MySQL nach MSSQL

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*

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.