Vinzenz Mai: MS-SQL -> MySQL

Beitrag lesen

Hallo Marc,

ich soll alle 3 Minuten

nutze den SQL-Server-Agent.

die letzten 5 Datensätze aus einer MS-SQL-Tabelle alle Datensätze auslesen

Was nun, die letzten fünf oder alle?

und 1:1 in eine MySQL-Tabelle schreiben. Bereits vorhandene Datensätze sollen ohne Fehlermeldung überschrieben werden.

Die Abfrage (ich hoffe, sie funktioniert) hab ich hinbekommen,

Nein, die funktioniert hinten und vorne nicht.

die Aktualisierung auch,

Du hast die Aktualisierung hinbekommen? Wie? Wo?

$query = "SELECT * FROM tabelle ORDER BY tabelle.lfd\_nr DESC LIMIT 0, 5 ";

MS SQL-Server leidet - wie ich - unter einer Backtick-Allergie und kennt bis einschließlich MS SQL-Server 2005 keine LIMIT-Klausel sondern TOP - siehe Handbuch. Das hier ist MySQL-Syntax, T-SQL wird Dir Fehlermeldungen um die Ohren schlagen. Maskierungszeichen in T-SQL, die hier sowieso völlig überflüssig sind, sind die eckigen Klammern.

SELECT * ist böse, hier sowieso. Gib die komplette Spaltenliste an. Du benötigst diese sowieso für das REPLACE-Statement, alternativ könntest Du auch INSERT ... ON DUPLICATE KEY UPDATE verwenden. Schließlich kann es erforderlich sein, die Datentypen geeignet zu konvertieren.

Nutze Prepared Statements mit der verbesserten MySQL-Erweiterung oder PDO.

Freundliche Grüße

Vinzenz