Po pierwsze, mogę udzielić Ci odpowiedzi na jeden tabela:
Kłopot z tymi wszystkimi INTO OUTFILE
lub --tab=tmpfile
(i -T/path/to/directory
) odpowiada, że wymaga uruchomienia mysqldump na tym samym serwerze jako serwer MySQL i posiadanie tych praw dostępu.
Moim rozwiązaniem było po prostu użycie mysql
(nie mysqldump
) z -B
parametr, wstaw instrukcję SELECT z -e
, a następnie masuj wyjście ASCII za pomocą sed
i zakończ z plikiem CSV zawierającym wiersz pola nagłówka:
Przykład:
mysql -B -u username -p password database -h dbhost -e "SELECT * FROM accounts;" \
| sed "s/\"/\"\"/g;s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g"
"id","login","hasło","folder","e-mail""8","mariana","xxxxxxxxxx","mariana","""3","squaredesign","xxxxxxxxxxxxxxxxxx"," squaredesign","[email protected]
""4","miedziak","xxxxxxxxxx","miedziak","przykład@sqldat .com
""5","Sarko","xxxxxxxxx","Sarko","""6","LogitransPoland","xxxxxxxxxxxxxx","LogitransPoland","""7","Amos","xxxxxxxxxxxxxxxxxxxxx"," Amos","""9","Annabelle","xxxxxxxxxxxxxxxx","Annabelle","""11","Brandfathers andSons","xxxxxxxxxxxxxxxxxx","BrandfathersAndSons","""12","ImagineGroup", "xxxxxxxxxxxxxxxx","ImagineGroup","""13","EduSquare.pl","xxxxxxxxxxxxxxxxx","EduSquare.pl","""101","tmp","xxxxxxxxxxxxxxxxxxxxx","_","
Dodaj plik
Następnie pobierz listę wszystkich Twoje stoły z
Stamtąd już tylko jeden krok, aby utworzyć pętlę, na przykład w powłoce Bash, aby iterować po tych tabelach:
Między > outfile.csv
na końcu tego jednolinijki, aby pobrać plik CSV dla tej tabeli.mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
do
i ; done
wstaw długie polecenie, które napisałem w części 1 powyżej, ale zastąp swoją nazwę tabeli $tb
zamiast tego.