Klaus: MySQL-Befehle aus Datei

Hallo,

ich habe ein Dump meiner MySQL-Datenbank von phpMyAdmin vorliegen. Diese möchte ich mittels mysql_query(); in eine neue DB einfügen.

Dazu habe ich es wie folgt versucht (Quelle: Google):

<?php
foreach ( file("mysql.sql") as $zeile) {
 $result = mysql_query($zeile) or die ("Fehler:<br>".mysql_error()."<br><br>$Sql");
}
?>

Ausführen tut er es, jedoch gibt es einen Fehler:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Warum? Hier die Antwort:

In der mysql.sql-Datei steht folgendes (nur der wichtigste auszug):

CREATE TABLE test (
  id varchar(20) collate latin1_german1_ci NOT NULL default '',

Woran liegt es: Da die Zeile, die Ausgeführt wird ja 'CREATE TABLE test (' ist, ohne 'id varchar(20) collate latin1_german1_ci NOT NULL default '','.

Was kann ich tun, dass gleich alles ausgeführt wird und nicht nur Zeile für Zeile?

Gruß
Klaus

  1. Was kann ich tun, dass gleich alles ausgeführt wird und nicht nur Zeile für Zeile?

    Die Datei ordentlich parsen und evtl. die Abfragen zuvor abchecken ob die wirklich ausgeführt werden soll.

    deine oma

    1. Hi,

      Die Datei ordentlich parsen und evtl. die Abfragen zuvor abchecken ob die wirklich ausgeführt werden soll.

      wie mache ich das am besten?

      Gruß
      Klaus

  2. echo $begrüßung;

    Ausführen tut er es, jedoch gibt es einen Fehler:

    Du widersprichst dir selbst.

    In der mysql.sql-Datei steht folgendes (nur der wichtigste auszug):
    CREATE TABLE test (
      id varchar(20) collate latin1_german1_ci NOT NULL default '',

    Inklusive Zeilenumbruch? Das kann dann nicht gehen, wenn du zeilenweise Statements absendest.

    Was kann ich tun, dass gleich alles ausgeführt wird und nicht nur Zeile für Zeile?

    Am besten mit dem Kommandozeilentool von MySQL (mysql -zugangs_parameter < datei), falls Zugriff auf die Kommandozeile besteht, ansonsten kannst du versuchen, den Befehl mit PHPs Program Execution Functions abzusetzen.

    echo "$verabschiedung $name";

    1. Hi,

      Am besten mit dem Kommandozeilentool von MySQL (mysql -zugangs_parameter < datei)

      Zugriff hab ich darauf (Komandozeilentool). Nur was schreibe ich bei -zuganfs_parameter hin? Hab keine Ahnung von dem mysql-tool.

      Gruß
      Klaus

      1. hi,

        Zugriff hab ich darauf (Komandozeilentool). Nur was schreibe ich bei -zuganfs_parameter hin? Hab keine Ahnung von dem mysql-tool.

        http://dev.mysql.com/doc/refman/4.1/en/invoking-programs.html

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }