sql >> Database >  >> RDS >> Mysql

Dump alle tabellen in CSV-formaat met 'mysqldump'

Ten eerste kan ik u het antwoord geven voor één tafel:

Het probleem met al deze INTO OUTFILE of --tab=tmpfile (en -T/path/to/directory ) antwoorden is dat het uitvoeren van mysqldump . vereist op dezelfde server als de MySQL-server en met die toegangsrechten.

Mijn oplossing was gewoon om mysql . te gebruiken (niet mysqldump ) met de -B parameter, inline de SELECT-instructie met -e en masseer vervolgens de ASCII-uitvoer met sed , en eindigen met CSV inclusief een kopveldrij:

Voorbeeld:

 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", "wachtwoord", "map", "e-mail""8", "mariana", "xxxxxxxxxxxx", "mariana", """3","vierkantontwerp","xxxxxxxxxxxxxxxxxx"," squaredesign","[email protected] ""4","miedziak","xxxxxxxxxx","miedziak","voorbeeld@sqldat .com ""5","Sarko","xxxxxxxxx","Sarko","""6","LogitransPoland","xxxxxxxxxxxxxxx","LogitransPoland","""7","Amos","xxxxxxxxxxxxxxxxxxxxx"," Amos","""9","Annabelle","xxxxxxxxxxxxxxxx","Annabelle","""11","Brandfathers and Sons","xxxxxxxxxxxxxxxxxx","BrandfathersAndSons","""12","ImagineGroup", "xxxxxxxxxxxxxxxxxx","ImagineGroup","""13","EduSquare.pl","xxxxxxxxxxxxxxxxxx","EduSquare.pl","""101","tmp","xxxxxxxxxxxxxxxxxxxxxxxx","_","

Voeg een > outfile.csv toe aan het einde van die one-liner, om uw CSV-bestand voor die tabel te krijgen.

Krijg vervolgens een lijst van alle uw tafels met

mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"

Vanaf daar is het nog maar één stap om een ​​lus te maken, bijvoorbeeld in de Bash-shell om over die tabellen te itereren:

 for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
     echo .....;
 done

Tussen de do en ; done voeg het lange commando in dat ik hierboven in Deel 1 heb geschreven, maar vervang je tabelnaam door $tb in plaats daarvan.



  1. Dynamische draaikolommen in SQL Server

  2. Opstarten RAC-database mislukt met fout ORA-12547

  3. Controleer of er al een door de gebruiker gedefinieerd type bestaat in PostgreSQL

  4. Versleuteling gebruiken om PostgreSQL-databasebeveiliging te versterken