Nejprve vám mohu dát odpověď na jednu tabulka:
Problém se všemi těmito INTO OUTFILE
nebo --tab=tmpfile
(a -T/path/to/directory
) odpovídá, že vyžaduje spuštění mysqldump na stejném serveru jako server MySQL a má tato přístupová práva.
Moje řešení bylo jednoduše použít mysql
(ne mysqldump
) pomocí -B
vložte příkaz SELECT s -e
a poté masírujte výstup ASCII pomocí sed
a ukončete soubor CSV včetně řádku pole záhlaví:
Příklad:
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","heslo","složka","e-mail""8","mariana","xxxxxxxxxx","mariana","""3","squaredesign","xxxxxxxxxxxxxxxxx","," squaredesign","lexdatqamplecom. ""4","miedziak","xxxxxxxxxx","miedziak","qqq .com ""5","Sarko","xxxxxxxxx","Sarko","""6","LogitransPoland","xxxxxxxxxxxxxx","LogitransPoland","""7","Amos","xxxxxxxxxxxxxxxxxxxx","," Amos","""9","Annabelle","xxxxxxxxxxxxxxx","Annabelle","""11","Brandfathers andSons","xxxxxxxxxxxxxxxxx","BrandfathersAndSons","""12","ImagineGroup", "xxxxxxxxxxxxxxxx","ImagineGroup","""13","EduSquare.pl","xxxxxxxxxxxxxxxxx","EduSquare.pl","""101","tmp","xxxxxxxxxxxxxxx","xxxxxxxxxxxxxxx","xxxxxxxxxxxxxxxx" af href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f0a7bfb2b3ddc1c4de83818591829594958399979ede91849c918383999199ede."
Přidejte > outfile.csv
na konci tohoto jednořádkového řádku, abyste získali soubor CSV pro tuto tabulku.
Dále získejte seznam všech vaše stoly s
mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
Odtud je už jen jeden další krok k vytvoření smyčky, například v prostředí Bash pro iteraci těchto tabulek:
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
Mezi do
a ; done
vložte dlouhý příkaz, který jsem napsal v části 1 výše, ale nahraďte název tabulky řetězcem $tb
místo toho.