Ich möchte eine Textdatei mit SQL-Abfragen in MySQL ausführen.
Ich habe versucht zu rennen source /Desktop/test.sql
und habe den Fehler 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?
mysql
command-line
user1160432
quelle
quelle
Antworten:
Wenn Sie sich in der MySQL-Befehlszeile befinden, müssen
mysql>
Sie die SQL-Datei als deklarierensource
.quelle
\
vor dem Leerzeichen verwenden oder den Dateinamen mit einschließen"
.Sie haben viele Möglichkeiten:
mysql -h hostname -u user database < path/to/test.sql
quelle
-p
Option angegeben werden kann, wird dies nicht empfohlen: Andere Benutzer auf demselben Host könnenps
in diesem Fall Systemtools verwenden , die es gerne lesen.-p
ohne Argument fordert zur Eingabe des Passworts in der nächsten Zeile aufMit dem folgenden Befehl können Sie MySQL-Anweisungen ausführen, die in eine Textdatei geschrieben wurden:
Wenn Ihre Datenbank noch nicht erstellt wurde, melden Sie sich zuerst bei MySQL an, indem Sie:
dann:
dann:
das sollte es tun!
Weitere Informationen finden Sie hier: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html
quelle
mysql -u yourusername -p"yourpassword"
Meine Lieblingsoption dafür ist:
Ich benutze es so, weil Sie, wenn Sie es mit "" bespannen, falsche Pfade und Fehler mit Leerzeichen und - und wahrscheinlich mehr Probleme mit Zeichen vermeiden, auf die ich nicht gestoßen bin.
Mit @ elcuco Kommentar schlage ich vor, diesen Befehl mit [Leerzeichen] vorher zu verwenden, damit bash angewiesen wird, das Speichern im Verlauf zu ignorieren. Dies funktioniert in den meisten bash sofort.
Falls Ihr Befehl dennoch im Verlauf gespeichert wird, sehen Sie sich bitte die folgenden Lösungen an:
Führen Sie den Befehl aus, ohne ihn im Verlauf zu behalten
zusätzliche Sicherheitsbearbeitung
Nur für den Fall, dass Sie besonders sicher sein möchten, können Sie den folgenden Befehl verwenden und das Kennwort in die Befehlszeileneingabe eingeben:
quelle
Alle Top-Antworten sind gut. Aber nur für den Fall, dass jemand die Abfrage von einer Textdatei auf einem Remote-Server ausführen UND die Ergebnisse in einer Datei speichern möchte (anstatt sie auf der Konsole anzuzeigen), können Sie Folgendes tun:
Hoffe das hilft jemandem.
quelle
-p
und dem Passwort seinSELECT ... INTO OUTFILE /path/to/file.csv
effizienter. Siehe Optionen und Syntax hier - dev.mysql.com/doc/refman/5.7/en/select-into.htmlGeben Sie den Pfad der SQL-Datei wie folgt an:
quelle
Ich bin hierher gekommen, um nach dieser Antwort zu suchen, und hier ist, was ich gefunden habe, am besten für mich funktioniert: Hinweis Ich verwende Ubuntu 16.xx.
mysql -u <your_user> - p
source file_name.sql
Hoffe das hilft.
quelle
mysql -u<user> -p -e 'source filename.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,
quelle
Es ist niemals eine gute Praxis, das Kennwortargument direkt über die Befehlszeile zu übergeben. Es wird in der
~/.bash_history
Datei gespeichert und kann von anderen Anwendungen aus aufgerufen werden.Verwenden Sie stattdessen Folgendes:
quelle
quelle
Sehr wahrscheinlich müssen Sie nur den Schrägstrich / Blackslash ändern: von
zu
Der Befehl wäre also:
quelle
Verwenden Sie Folgendes an der MySQL-Eingabeaufforderung :
Verwenden Sie kein Zitat. Auch wenn der Pfad Leerzeichen ('') enthält, verwenden Sie überhaupt kein Anführungszeichen .
quelle
Anstelle einer Umleitung würde ich Folgendes tun
Dadurch wird der Dateipfad zur SQL-Datei ausgeführt
quelle
So viele Möglichkeiten, es zu tun.
Wenn Sie Fehler über die Befehlszeile erhalten, stellen Sie sicher, dass Sie zuvor ausgeführt haben
Dies muss im Verzeichnis mysqld.exe ausgeführt werden, daher die CD.
Hoffe das ist hilfreich und nicht nur überflüssig.
quelle
Da
mysql -u yourusername -p yourpassword yourdatabase < text_file
hat auf einem Remote-Server (Amazon EC2) nicht funktioniert ...Stellen Sie sicher, dass die Datenbank zuerst erstellt wird.
Dann:
quelle
Als zukünftige Referenz 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 aus, was Ihr Laufwerk heißt. Versuchen Sie zuerst Backslashes. Wenn sie nicht funktionieren, versuchen Sie es mit dem Forward Slash. Wenn sie auch nicht funktionieren, stellen Sie sicher, dass Sie Ihren vollständigen Dateipfad und die Erweiterung .sql für den Dateinamen haben. Wenn Ihre Version auf Semikolons besteht, stellen Sie sicher, dass dieser vorhanden ist, und versuchen Sie es erneut.
quelle
Ich hatte diesen Fehler und versuchte alle Ratschläge, die ich bekommen konnte, ohne Erfolg.
Schließlich war das Problem, dass mein Ordner ein Leerzeichen im Ordnernamen hatte, das als Schrägstrich im Ordnerpfad angezeigt wurde. Sobald ich es gefunden und entfernt hatte, funktionierte es einwandfrei.
quelle