Първо, мога да ви дам отговора за един таблица:
Проблемът с всички тези INTO OUTFILE
или --tab=tmpfile
(и -T/path/to/directory
) отговорът е, че изисква стартиране на mysqldump на същия сървър като MySQL сървър и притежаващи тези права за достъп.
Моето решение беше просто да използвам mysql
(не mysqldump
) с -B
параметър, вмъкнете израза SELECT с -e
, след това масажирайте ASCII изхода с sed
и завърши с CSV, включително ред на полето на заглавката:
Пример:
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","password","folder","email""8","mariana","xxxxxxxxxx","mariana","""3","squaredesign","xxxxxxxxxxxxxxxx"," squaredesign","atex. ""4","miedziak","xxxxxxxxxx","miedziak"," ""5","Sarko","xxxxxxxxx","Sarko","""6","LogitransPoland","xxxxxxxxxxxxxx","LogitransPoland","""7","Amos","xxxxxxxxxxxxxxxxxx"," Amos","""9","Annabelle","xxxxxxxxxxxxxxxx","Annabelle","""11","Bandfathers andSons","xxxxxxxxxxxxxxxx","BrandfathersAndSons","""Gro","Imagine", "xxxxxxxxxxxxxxxx","ImagineGroup","""13","EduSquare.pl","xxxxxxxxxxxxxxxx","EduSquare.pl","""101","tmp","xxxxxxxxxxxxxx"," a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f0a7bfb2b3ddc1c4de83818591829594958399979ede91849c918383999979ede91849c918383999979ede91849c91838399919f91838399919f99db99999999999999999999999999999999999999999999999999999 "
Добавете > outfile.csv
в края на този едноред, за да получите своя CSV файл за тази таблица.
След това вземете списък с всички вашите таблици с
mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
Оттук нататък е само още една стъпка да направите цикъл, например в обвивката на Bash, за да преминете през тези таблици:
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
Между do
и ; done
вмъкнете дългата команда, която написах в част 1 по-горе, но заменете името на вашата таблица с $tb
вместо това.