sql >> Database teknologi >  >> RDS >> Mysql

Dump alle tabeller i CSV-format ved hjælp af 'mysqldump'

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.



  1. Juster dine Avg()-resultater i SQLite med DISTINCT-søgeordet

  2. Sådan gør du din MySQL- eller MariaDB-database yderst tilgængelig på AWS og Google Cloud

  3. SQLiteReadOnlyDatabaseException:forsøg på at skrive en skrivebeskyttet database (kode 1032)

  4. Hvad er den ideelle datatype at bruge, når du gemmer breddegrad/længdegrad i en MySQL-database?