Først kan jeg give dig svaret for én tabel:
Problemet med alle disse INTO OUTFILE
eller --tab=tmpfile
(og -T/path/to/directory
) svar er, at det kræver at køre mysqldump på samme server som MySQL-serveren og har disse adgangsrettigheder.
Min løsning var simpelthen at bruge mysql
(ikke mysqldump
) med -B
parameter, inline SELECT-sætningen med -e
, og massér derefter ASCII-outputtet med sed
, og afslut med CSV inklusive en overskriftsfeltrække:
Eksempel:
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","adgangskode","mappe","e-mail""8","mariana","xxxxxxxxxx","mariana","""3","squaredesign","xxxxxxxxxxxxxxxxxx"," squaredesign","dat ""4","miedziak","xxxxxxxxxx","miedziak"," .com ""5","Sarko","xxxxxxxxx","Sarko","""6","LogitransPoland","xxxxxxxxxxxxxx","LogitransPoland","""7","Amos","xxxxxxxxxxxxxxxxxxxx"," Amos","""9","Annabelle","xxxxxxxxxxxxxxxx","Annabelle","""11","Brandfathers andSons","xxxxxxxxxxxxxxxxxx","BrandfathersAndSons","""12","ImagineGroup", "xxxxxxxxxxxxxxxx","ImagineGroup","""13","EduSquare.pl","xxxxxxxxxxxxxxxxxx","EduSquare.pl","""101","tmp","xxxxxxxxxxxxxxxxxxxxxx","_","ample "
Tilføj en > outfile.csv
i slutningen af den one-liner, for at få din CSV-fil til den tabel.
Få derefter en liste over alle dine borde med
mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
Derfra er det kun et trin mere at lave en løkke, for eksempel i Bash-skallen for at iterere over disse tabeller:
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
Mellem do
og ; done
indsæt den lange kommando, jeg skrev i del 1 ovenfor, men erstat dit tabelnavn med $tb
i stedet.