Hoe voer ik een SQL-script uit in MySQL?

Ik wil een tekstbestand met SQL-query’s uitvoeren in MySQL.

Ik probeerde source /Desktop/test.sqluit te voeren en kreeg de foutmelding:

mysql> . \home\sivakumar\Desktop\test.sql FOUT: kan bestand niet openen
‘\home\sivakumar\Desktop\test.sql’, fout: 2

Enig idee wat ik verkeerd doe?


Antwoord 1, autoriteit 100%

Als u zich op de MySQL-opdrachtregel mysql>bevindt, moet u het SQL-bestand declareren als source.

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

Antwoord 2, autoriteit 40%

Je hebt nogal wat opties:

  • gebruik de MySQL-opdrachtregelclient: mysql -h hostname -u user database < path/to/test.sql
  • Installeer de MySQL GUI-tools, open uw SQL-bestand en voer het vervolgens uit
  • Gebruik phpmysql als de database beschikbaar is via uw webserver

Antwoord 3, autoriteit 29%

u kunt mysql-instructies uitvoeren die in een tekstbestand zijn geschreven met het volgende commando:

mysql -u yourusername -p yourpassword yourdatabase < text_file

als uw database nog niet is aangemaakt, log dan eerst in op uw mysql met:

mysql -u yourusername -p yourpassword yourdatabase

dan:

mysql>CREATE DATABASE a_new_database_name

dan:

mysql -u yourusername -p yourpassword a_new_database_name < text_file

dat zou het moeten doen!

Meer info hier: http: // dev. mysql.com/doc/refman/5.0/en/mysql-batch-commands.html


Antwoord 4, Autoriteit 15%

Mijn favoriete optie om dat te doen is:

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

Ik gebruik het op deze manier omdat wanneer u het met “” snoeit “” u verkeerde pad en fouten vermijdt met spaties en – en waarschijnlijk meer problemen met tekens waarmee ik niet tegenkwam.


Met @Elcuco-commentaar stel ik aan om deze opdracht te gebruiken met [Space] voordat het bash geeft om te negeren om het in de geschiedenis te sparen, dit zal in de meeste bash uit de doos werken.

Als het nog steeds uw opdracht in de geschiedenis opslaat, bekijk de volgende oplossingen:

uitvoeren commando zonder het in de geschiedenis te houden


Extra beveiligingsbewerking

Voor het geval u extra kluis wilt zijn, kunt u de volgende opdracht gebruiken en het wachtwoord invoeren in de opdrachtregelinvoer:

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

Antwoord 5, Autoriteit 13%

Alle top antwoorden zijn goed. Maar voor het geval iemand de query van een tekstbestand op een externe server en wordt uitgevoerd, bespaart de resultaten op een bestand (in plaats van te tonen op console), kunt u dit doen:

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

Ik hoop dat dit iemand helpt.


Antwoord 6, Autoriteit 5%

Geef het pad van .SQL-bestand als:

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


Antwoord 7, Autoriteit 5%

Ik kwam hier ook op zoek naar dit antwoord, en hier is wat ik vond, werkt het beste voor mij: Opmerking Ik gebruik ubuntu 16.x.x

  1. toegang mySQL met:

mysql -u <your_user> - p

  1. Voer in de MySQL-prompt:

source file_name.sql

Ik hoop dat dit helpt.


Antwoord 8, Autoriteit 4%

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

Geef geen enkele aanhalingstekens op.

Als de opdracht hierboven niet werkt, kopieert u het bestand naar C: Drive en probeer het opnieuw.
Zoals hieronder getoond,

mysql> source C:\fn_Split.sql

Antwoord 9, Autoriteit 3%

In plaats van omleiding zou ik het volgende doen

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

Hiermee wordt het bestand Path-to-SQL-bestand uitgevoerd


Antwoord 10, Autoriteit 3%

Nooit een goede praktijk is om het wachtwoordargument rechtstreeks van de opdrachtregel door te geven, wordt het opgeslagen in de ~/.bash_history-bestand en is toegankelijk vanuit andere toepassingen.

Gebruik dit in plaats daarvan:

mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p
Enter password:

Antwoord 11, Autoriteit 3%

mysql -uusername -ppassword database-name < file.sql

Antwoord 12, Autoriteit 2%

Zoveel manieren om het te doen.

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

Als u fouten krijgt via de opdrachtregel, moet u ervoor zorgen dat u het eerder hebt uitgevoerd

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

Dit moet worden uitgevoerd vanuit de map MySQLD.EXE, vandaar de CD.

Ik hoop dat dit nuttig is en niet alleen overbodig is.


Antwoord 13, Autoriteit 2%

Heel waarschijnlijk, hoeft u alleen de Slash / Blackslash te veranderen:
van

\home\sivakumar\Desktop\test.sql

Naar

/home/sivakumar/Desktop/test.sql

Dus de opdracht zou zijn:

source /home/sivakumar/Desktop/test.sql

Antwoord 14

Gebruik het volgende van MySQL-opdrachtprompt

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

Gebruik geen aanhalingstekens. Zelfs als het pad spatie(‘ ‘)bevat, gebruik dan helemaal geen aanhalingstekens.


Antwoord 15

Van linux 14.04 naar MySql 5.7, gebruik catcommando doorgesluisd met mysql login:

cat /Desktop/test.sql | sudo mysql -uroot -p 

U kunt deze methode gebruiken voor veel MySQL-commando’s om rechtstreeks vanuit Shell uit te voeren. Bijv.:

echo "USE my_db; SHOW tables;" | sudo mysql -uroot -p 

Zorg ervoor dat je je commando’s scheidt met een puntkomma (‘;’).

Ik zag deze aanpak niet in de bovenstaande antwoorden en vond het een goede bijdrage.


Antwoord 16

Sinds mysql -u yourusername -p yourpassword yourdatabase < text_filewerkte niet op een externe server (Amazon’s EC2)…

Zorg ervoor dat de database eerst wordt aangemaakt.

Dan:

mysql --host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql

Antwoord 17

Voor toekomstig gebruik, ik heb geconstateerd dat dit werkt versus de bovengenoemde methoden, onder Windows in je msql-console:

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

Als je root-drive niet “c” heet, wissel dan gewoon uit met hoe je drive heet. Probeer eerst backslashes, als ze niet werken, probeer dan de forward slash. Als ze ook niet werken, zorg er dan voor dat je je volledige bestandspad hebt, de extensie .sql in de bestandsnaam, en als je versie puntkomma’s gebruikt, zorg er dan voor dat het daar staat en probeer het opnieuw.


Antwoord 18

Ik had deze fout en heb al het advies geprobeerd dat ik kon krijgen, maar het mocht niet baten.

Eindelijk was het probleem dat mijn map een spatie had in de mapnaam die verscheen als een schuine streep in het mappad. Toen ik het eenmaal had gevonden en verwijderd, werkte het prima.

Other episodes