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","example@sqldat.com
""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.