Chcę wykonać plik tekstowy zawierający zapytania SQL w MySQL.
Próbowałem uruchomić source /Desktop/test.sql
i otrzymałem błąd:
mysql>. \ home \ sivakumar \ Desktop \ test.sql BŁĄD: Nie można otworzyć pliku „\ home \ sivakumar \ Desktop \ test.sql”, błąd: 2
Masz pomysł na to, co robię źle?
mysql
command-line
użytkownik1160432
źródło
źródło
Odpowiedzi:
Jeśli jesteś w linii poleceń MySQL
mysql>
, musisz zadeklarować plik SQL jakosource
.źródło
\
przed spacją lub zawinąć nazwę pliku"
.Masz całkiem sporo opcji:
mysql -h hostname -u user database < path/to/test.sql
źródło
-p
opcją, nie jest to zalecane: inni użytkownicy na tym samym hoście mogą korzystać z narzędzi systemowych, takich jakps
czytanie w tym przypadku.-p
bez argumentu monituje o podanie hasła w następnym wierszumożesz wykonać instrukcje mysql, które zostały zapisane w pliku tekstowym, używając następującego polecenia:
jeśli twoja baza danych nie została jeszcze utworzona, zaloguj się najpierw do mysql, używając:
następnie:
następnie:
że należy to zrobić!
Więcej informacji tutaj: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html
źródło
mysql -u yourusername -p"yourpassword"
Moja ulubiona opcja to:
Używam tego w ten sposób, ponieważ kiedy ciągniesz go za pomocą „” unikając niewłaściwej ścieżki i błędów ze spacjami oraz - i prawdopodobnie więcej problemów z znakami, z którymi się nie spotkałem.
Z komentarzem @elcuco sugeruję użycie tego polecenia z [spacją], aby polecił bashowi, aby zignorował zapisanie go w historii, to zadziała po wyjęciu z pudełka w większości bash.
jeśli nadal zapisujesz twoje polecenie w historii, zobacz następujące rozwiązania:
Wykonaj polecenie bez przechowywania go w historii
dodatkowa edycja bezpieczeństwa
Na wypadek, gdy chcesz być bardziej bezpieczny, możesz użyć następującego polecenia i wprowadzić hasło w wierszu poleceń:
źródło
Wszystkie najlepsze odpowiedzi są dobre. Ale na wypadek, gdyby ktoś chciał uruchomić zapytanie z pliku tekstowego na zdalnym serwerze ORAZ zapisać wyniki w pliku (zamiast pokazywać na konsoli), możesz to zrobić:
Mam nadzieję, że to komuś pomoże.
źródło
-p
hasłem a hasłem nie powinno być spacjiSELECT ... INTO OUTFILE /path/to/file.csv
wydaje mi się, że jest to bardziej wydajny sposób. Zobacz opcje i składnię tutaj - dev.mysql.com/doc/refman/5.7/en/select-into.htmlPodaj ścieżkę do pliku .sql jako:
źródło
Przyszedłem tutaj, szukając również tej odpowiedzi, i oto, co znalazłem, działa najlepiej dla mnie: Uwaga: Używam Ubuntu 16.xx
mysql -u <your_user> - p
source file_name.sql
Mam nadzieję że to pomoże.
źródło
mysql -u<user> -p -e 'source filename.sql'
Nie podawaj pojedynczych cudzysłowów.
Jeśli powyższe polecenie nie działa, skopiuj plik na dysk c: i spróbuj ponownie. jak pokazano niżej,
źródło
Nigdy nie jest dobrą praktyką przekazywanie argumentu hasła bezpośrednio z wiersza poleceń, jest on zapisywany w
~/.bash_history
pliku i może być dostępny z innych aplikacji.Zamiast tego użyj tego:
źródło
źródło
Bardzo prawdopodobne, że po prostu musisz zmienić slash / blackslash: z
do
Tak więc polecenie brzmiałoby:
źródło
użyj następujących poleceń w wierszu polecenia mysql -
Nie używaj oferty. Nawet jeśli ścieżka zawiera spację („”), nie używaj w ogóle cudzysłowu .
źródło
zamiast przekierowania zrobiłbym następujące
Spowoduje to wykonanie pliku ścieżka-plik-sql
źródło
Tak wiele sposobów, aby to zrobić.
Jeśli otrzymujesz błędy z wiersza poleceń, upewnij się, że wcześniej uruchomiłeś
To musi być uruchomione z katalogu mysqld.exe, stąd CD.
Mam nadzieję, że jest to pomocne, a nie tylko zbędne.
źródło
Ponieważ
mysql -u yourusername -p yourpassword yourdatabase < text_file
nie działał na zdalnym serwerze (Amazon EC2) ...Upewnij się, że najpierw utworzono bazę danych.
Następnie:
źródło
Dla przyszłego odniesienia, stwierdziłem, że to działa w porównaniu do wyżej wymienionych metod, w systemie Windows w konsoli msql:
mysql >>
source c://path_to_file//path_to_file//file_name.sql;
Jeśli twój dysk root nie jest nazywany „c”, po prostu zamień go z tym, co nazywa się twoim dyskiem. Najpierw wypróbuj ukośniki odwrotne, jeśli nie działają, wypróbuj ukośnik. Jeśli one również nie działają, upewnij się, że masz pełną ścieżkę pliku, rozszerzenie .sql w nazwie pliku, a jeśli Twoja wersja wymaga średników, upewnij się, że tam jest, i spróbuj ponownie.
źródło
Miałem ten błąd i wypróbowałem wszystkie porady, które udało mi się bezskutecznie.
Wreszcie problem polegał na tym, że mój folder miał spację w nazwie folderu, która pojawia się jako ukośnik w ścieżce folderu, gdy go znalazłem i usunąłem, działał dobrze.
źródło