2010-03-16 11 views
15

uruchomić pojedynczy plik można uruchomić w mysqluruchamianie wielu plików SQL w MySQL partii

. \ Filename

lub poza mysql można uruchomić

mysql < nazwa pliku

Mam katalog sql Pliki więc próbuję uruchomić je wszystkie na raz za pomocą wieloznacznych

* .sql

ale to nie działa.

Wszelkie pomysły?

Odpowiedz

38

Zakładając, że używasz bash:

cat *.sql | mysql

+3

Awsome ... pracował:) Użyłem: cat data * .sql | mysql -u root -p dbName –

+4

To będzie działać tylko wtedy, gdy wszystkie pliki kończą się średnikami po poleceniach. W przeciwnym razie pojawi się błąd składni SQL. –

+0

@StanJames Tak, mam ten sam problem! Czy istnieje sposób, aby naprawić, że możesz myśleć? Przypuszczam, że innym rozwiązaniem jest użycie pętli bashowej – light24bulbs

4

bash:

mysql < <(cat *.sql) 
+0

downvote bez wyjaśnienia dlaczego ... –

+0

Chyba ktoś zaznaczono to w dół, ponieważ działa to polecenie dostaje błąd „błąd składni w pobliżu Nieoczekiwany token '('” To – hmak

+0

ponieważ podstawienie procesu wymaga 'bash'. Nie 'sh', nie' dash', ale 'bash' właściwe. http://tldp.org/LDP/abs/html/process-sub.html –

9
for %S in (*.sql) do mysql -u user_name database_name < %S 

lub

mysql -u user_name -p password database_name < file.sql 
+0

To działa dla mnie. Obecna wersja mysql nie zezwala na spacje między -u a nazwą użytkownika. To samo dotyczy również hasła. –

2

bash:

for sql_file in `ls /path/to/directory/*.sql`; do mysql -uUSER -pPASSWORD DATABASE < $sql_file ; done 
7

W systemie Windows:

FOR %%A IN ("*.sql") DO "D:\mysql\Install\MySQL Server 5.5\bin\mysql" --user=scooby --password=pwd123 databasename < %%A >output.tab 
Powiązane problemy