it-swarm.com.de

Wie führe ich ein SQL-Skript in MySQL aus?

Ich möchte eine Textdatei mit SQL-Abfragen in MySQL ausführen.

Ich habe versucht, source /Desktop/test.sql auszuführen und die Fehlermeldung erhalten:

mySQL>.\home\sivakumar\Desktop\test.sql FEHLER: Fehler beim Öffnen der Datei '\ home\sivakumar\Desktop\test.sql', Fehler: 2

Irgendeine Idee, was ich falsch mache?

340
user1160432

Wenn Sie sich in der MySQL-Befehlszeile mysql> befinden, müssen Sie die SQL-Datei als source deklarieren.

mysql> source \home\user\Desktop\test.sql;
381
Thomas Edwards

Sie haben viele Möglichkeiten:

  • benutze den MySQL Kommandozeilen Client: mysql -h hostname -u user database < path/to/test.sql
  • Installieren Sie die MySQL-GUI-Tools, öffnen Sie Ihre SQL-Datei und führen Sie sie aus
  • Verwenden Sie phpmysql, wenn die Datenbank über Ihren Webserver verfügbar ist
135
Eugen Rieck

mit dem folgenden Befehl können Sie mysql-Anweisungen ausführen, die in eine Textdatei geschrieben wurden:

mysql -u yourusername -p yourpassword yourdatabase < text_file

wenn Ihre Datenbank noch nicht erstellt wurde, melden Sie sich zuerst mit folgendem Befehl bei Ihrem MySQL an:

mysql -u yourusername -p yourpassword yourdatabase

dann:

mysql>CREATE DATABASE a_new_database_name

dann:

mysql -u yourusername -p yourpassword a_new_database_name < text_file

das sollte es tun!

Weitere Informationen finden Sie hier: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

115
Paul Preibisch

Alle Top-Antworten sind gut. Aber nur für den Fall, dass jemand die Abfrage von einer Textdatei auf einem Remote-Server ausführen möchte UND Ergebnisse in einer Datei speichern (anstatt auf der Konsole anzuzeigen), können Sie dies tun:

mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file

Hoffe das hilft jemandem.

47
Bhushan

Meine Lieblingsoption dafür ist:

 mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"

Ich benutze es so, weil Sie, wenn Sie es mit "" Zeichenfolgen versehen, falsche Pfade und Fehler mit Leerzeichen und - und wahrscheinlich mehr Probleme mit Zeichen vermeiden, die mir nicht begegnet sind.


Mit @elcuco comment schlage ich vor, diesen Befehl mit [Leerzeichen] zu verwenden, damit bash das Speichern im Verlauf ignoriert. Dies funktioniert in den meisten Fällen sofort.

falls Ihr Befehl weiterhin im Verlauf gespeichert wird, sehen Sie sich bitte die folgenden Lösungen an:

Befehl ausführen, ohne ihn im Verlauf zu belassen


zusätzliche Sicherheit bearbeiten

Für den Fall, dass Sie besonders sicher sein möchten, können Sie den folgenden Befehl verwenden und das Kennwort in die Befehlszeile eingeben:

mysql --user="username" --database="databasename" -p < "filepath"
40
talsibony

Ich bin auch hierher gekommen, um nach dieser Antwort zu suchen, und hier ist, was ich gefunden habe, das Beste für mich: Hinweis: Ich verwende Ubuntu 16.x.x.

  1. Greifen Sie auf mysql zu, indem Sie Folgendes verwenden:

mysql -u <your_user> - p

  1. Geben Sie an der mysql-Eingabeaufforderung Folgendes ein:

source file_name.sql

Hoffe das hilft.

16
Zac Smith

Geben Sie den Pfad der .sql-Datei wie folgt an:

source c:/dump/SQL/file_name.sql;

See In The Image:

15
Shubham Verma
mysql> source C:\Users\admin\Desktop\fn_Split.sql

Geben Sie keine einfachen Anführungszeichen an.

Wenn der obige Befehl nicht funktioniert, kopieren Sie die Datei auf Laufwerk c: und versuchen Sie es erneut. Wie nachfolgend dargestellt,

mysql> source C:\fn_Split.sql
14

Es hat sich nie bewährt, das Kennwortargument direkt über die Befehlszeile zu übergeben. Es wird in der Datei ~/.bash_history gespeichert und kann von anderen Anwendungen aus aufgerufen werden.

Verwenden Sie dies stattdessen:

mysql -u user --Host host --port 9999 database_name < /scripts/script.sql -p
Enter password:
11
mysql -uusername -ppassword database-name < file.sql

Sehr wahrscheinlich müssen Sie nur den Schrägstrich/Blackslash ändern: from

 \home\sivakumar\Desktop\test.sql

zu

 /home/sivakumar/Desktop/test.sql

Der Befehl wäre also:

source /home/sivakumar/Desktop/test.sql
8
Ben Lin

verwenden Sie die folgenden aus MySQL-Eingabeaufforderung -

source \\home\\user\\Desktop\\test.sql;

Verwenden Sie kein Zitat. Auch wenn der Pfad enthält Leerzeichen ('') verwendet überhaupt kein Zitat.

6
Rajesh Paul

Da mysql -u yourusername -p yourpassword yourdatabase < text_file auf einem Remote-Server (Amazon EC2) nicht funktioniert hat ...

Stellen Sie sicher, dass die Datenbank zuerst erstellt wird.

Dann:

mysql --Host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql
3
Damir Olejar

Zum späteren Nachschlagen habe ich festgestellt, dass dies im Vergleich zu den oben genannten Methoden unter Windows in Ihrer msql-Konsole funktioniert:

mysql >> source c://path_to_file//path_to_file//file_name.sql;

Wenn Ihr Root-Laufwerk nicht "c" heißt, tauschen Sie es einfach mit dem Namen Ihres Laufwerks aus. Versuchen Sie zuerst Backslashes. Wenn sie nicht funktionieren, versuchen Sie den Schrägstrich. Wenn sie auch nicht funktionieren, vergewissern Sie sich, dass Sie den vollständigen Dateipfad und die Erweiterung .sql für den Dateinamen haben. Wenn Ihre Version Semikolons enthält, vergewissern Sie sich, dass diese vorhanden sind, und versuchen Sie es erneut.

3
Chad Mx

So viele Möglichkeiten.

From Workbench: File > Run SQL Script -- then follow prompts

From Windows Command Line:
   Option 1: mysql -u usr -p
             mysql> source file_path.sql
   Option 2: mysql -u usr -p '-e source file_path.sql'
   Option 3: mysql -u usr -p < file_path.sql
   Option 4: put multiple 'source' statements inside of file_path.sql (I do this to drop and recreate schemas/databases which requires multiple files to be run)
             mysql -u usr -p < file_path.sql

Wenn Sie Fehler in der Befehlszeile erhalten, vergewissern Sie sich, dass Sie diese zuvor ausgeführt haben

cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize 

Dies muss im Verzeichnis mysqld.exe ausgeführt werden, daher die CD.

Hoffe das ist hilfreich und nicht nur überflüssig.

1
DonkeyKong

anstelle der Umleitung würde ich Folgendes tun

mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'

Dadurch wird die Datei path-to-sql-file ausgeführt

1
DWGuru

Ich hatte diesen Fehler und versuchte alle Ratschläge, die ich vergeblich bekommen konnte.

Schließlich bestand das Problem darin, dass mein Ordner ein Leerzeichen im Ordnernamen enthielt, das als Schrägstrich im Ordnerpfad angezeigt wurde. Nachdem ich es gefunden und entfernt hatte, funktionierte es einwandfrei.

0
user3753416