Archive for the ‘MySQL’ Category

von MySQL nach MSSQL

03. November 2010

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:
  1. ALTER TABLE "tabellenname"
  2. ADD CONSTRAINT fk_name FOREIGN KEY(name_id)
  3. 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

  1. CREATE TABLE IF NOT EXISTS "articles" (
  2. "id" int(10) unsigned NOT NULL,
  3. "author_id" int(10) unsigned NOT NULL,
  4. "newsletter_id" int(10) unsigned NOT NULL,
  5. "title" varchar(45) default NULL,
  6. "content" text,
  7. "modified" datetime default NULL,
  8. "created" datetime default NULL,
  9. PRIMARY KEY ("id"),
  10. KEY "fk_articles_authors" ("author_id"),
  11. KEY "fk_articles_newsletters1" ("newsletter_id")
  12. ) AUTO_INCREMENT=6 ;

am Ende

  1. CREATE TABLE "articles" (
  2. "id" int IDENTITY(59,1) NOT NULL,
  3. "author_id" int NOT NULL,
  4. "title" varchar(45) default NULL,
  5. "content" text,
  6. "modified" datetime default NULL,
  7. "created" datetime default NULL,
  8. PRIMARY KEY ("id")
  9. );
  10. ALTER TABLE "articles"
  11. ADD CONSTRAINT fk_articles_authors FOREIGN KEY(author_id)
  12. REFERENCES authors(id);

*schluchz*

MSSQL – LIMIT

12. Oktober 2010

MsSql kennt offenbar “LIMIT” nicht. Daher, nach kurzer Recherche, die Erkenntnis:

mySQL:

  1. SELECT name FROM tabelle LIMIT 0, 3

msSQL:

  1. SELECT TOP 3 name FROM tabelle

Aha, aha.

MySQL: Einträge die jünger als 1 Monat sind

26. Juli 2010

Memo an mich: so funktioniert das. Ich will alle Daten aus der DB holen, die vor weniger als einem Monat hinzugefügt (date_added) wurden.

  1. SELECT * FROM table WHERE date_added >= date_sub(CURDATE(), INTERVAL 1 MONTH)

Zeichen in der Datenbank ersetzen

09. August 2009

Natürlich is es simpel, aber da ich es immer wieder brauche und mir die Syntax einfach nicht merken kann, notier ich es mir einfach mal. Zum Ersetzen von Zeichen direkt in der Datenbank reicht der Befehl

  1. UPDATE tabellenname SET spalte = replace(spalte,'ü', 'ü')