Primero, puedo darte la respuesta para uno tabla:
El problema con todos estos INTO OUTFILE
o --tab=tmpfile
(y -T/path/to/directory
) responde que requiere ejecutar mysqldump en el mismo servidor como el servidor MySQL, y tener esos derechos de acceso.
Mi solución fue simplemente usar mysql
(no mysqldump
) con el -B
parámetro, inserte la instrucción SELECT con -e
, luego masajee la salida ASCII con sed
y termina con CSV que incluye una fila de campo de encabezado:
Ejemplo:
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","contraseña","carpeta","email""8","mariana","xxxxxxxxxx","mariana","""3","squaredesign","xxxxxxxxxxxxxxxxx"," diseño cuadrado","[email protected]
""4","miedziak","xxxxxxxxxx","miedziak","ejemplo@sqldat .com
""5","Sarko","xxxxxxxxx","Sarko","""6","LogitransPolonia","xxxxxxxxxxxxxx","LogitransPolonia","""7","Amos","xxxxxxxxxxxxxxxxxxxx"," Amos",""9","Annabelle","xxxxxxxxxxxxxxxxxx","Annabelle",""11","Padres e hijos","xxxxxxxxxxxxxxxxx","Padres e hijos","""12","ImagineGroup", "xxxxxxxxxxxxxxxx","ImagineGroup","""13","EduSquare.pl","xxxxxxxxxxxxxxxxx","EduSquare.pl","""101","tmp","xxxxxxxxxxxxxxxxxxxxx","_","
Agrega un
A continuación, obtenga una lista de todos tus mesas con
A partir de ahí, es solo un paso más para hacer un bucle, por ejemplo, en el shell de Bash para iterar sobre esas tablas:
Entre el > outfile.csv
al final de esa frase, para obtener su archivo CSV para esa tabla.mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
do
y ; done
inserte el comando largo que escribí en la Parte 1 anterior, pero sustituya su nombre de tabla con $tb
en su lugar.