Ik wil een tekstbestand met SQL-query’s uitvoeren in MySQL.
Ik probeerde source /Desktop/test.sql
uit 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
- toegang mySQL met:
mysql -u <your_user> - p
- 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 cat
commando 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_file
werkte 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.