[MySQL] Import ponad 400 plików


(Marvin Nekromanta) #1

Witam!

Otóż szukam możliwości importu ponad 400 plików do bazy. Nie mogę zrobić tego przez polecenie [mysqlimport] ponieważ pliki są oznaczone numerami i opisem, a nie nazwą tabeli. Zawierają się w nich update i inserty do bazy oraz znacznie mniej delete'ów, które muszę wgrać.

Myślałem nad wsadowym dodawaniem, ale nie mogę znaleźć nic innego niż [mysqlimport]. Ewentualnie mógłbym zrobić merge wszystkich plików. Tylko czym...

Z góry dzięki za pomoc.


(Ryan) #2

Merge możesz dokonać przy użyciu polecenia copy (lub analogicznego). Generalnie jednak nie rozumiem, dlaczego nie napiszesz skryptu w shellu i nie odpalisz mysqlimport dla kolejnych plików?


(Marvin Nekromanta) #3

Tylko co mi da mysqlimport jeżeli nawet nadawszy plikowi nazwę pasującą do tabeli niezaimportuje go, ponieważ pliki potrafią modyfikować parę tabel jednocześnie. Potrzebowałbym czegoś co działa na zasadzie zwykłego importu jak to ma miejsce np w phpmyadminie, ale wsadowo importując i wykonując każdą sql'ke.

Chyba najlepszym wyjściem będzie połączenie plików w jeden i wtedy import do bazy.


(mordesku) #4

Witaj,

Zamiast mysqlimport użyj mysql i jako wejście daj zawartość pliku czyli:

mysql -h host -p < plik.sql

(Marvin Nekromanta) #5

Chodzi o wsadowe dodanie. Jeżeli zastąpi się plik.sql -> *.sql to nic nie daje i wywala błąd. Import pojedynczego pliku nie sprawia tutaj problemu.


(mordesku) #6

jeśli pracujesz pod linuxem to zrób tak:

cat *.sql | mysql -h host -p

(Marvin Nekromanta) #7

Właśnie o coś takiego mi chodziło. Wielkie dzięki.


(Sarelo33) #8

Witam, a jeśli ktoś pracuje pod windowsami? Może mi ktoś napisać taki skrypcik do PowerShell?