Exportar tabla desde Amazon RDS a un archivo csv


Tengo una base de datos mysql ejecutándose en Amazon RDS, y quiero saber cómo exportar una tabla completa a formato csv. Actualmente uso mysql server en Windows para consultar la base de datos de Amazon, pero cuando intento ejecutar una exportación obtengo un error, probablemente porque no hay un servidor de archivos dedicado para amazon RDS. ¿Hay alguna solución a esto?

Author: Steffen Opel, 2012-03-02

2 answers

Es de suponer que está tratando de exportar desde una base de datos Amazon RDS a través de una consulta SELECT ... INTO OUTFILE, lo que genera este problema común, consulte, por ejemplo, exportar base de datos a CSV. La respectiva respuesta del equipo AWS confirma su suposición de que la falta de acceso al servidor impide una exportación como esta, y sugiere un enfoque alternativo también a través de la exportación sus datos en formato CSV seleccionando los datos en el cliente de línea de comandos mysql y canalizando la salida para reformatear los datos como CSV , así:

mysql -u username -p --database=dbname --host=rdshostname --port=rdsport --batch 
  -e "select * from yourtable" 
  | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > yourlocalfilename

El usuario fpalero proporciona una alternativa y un enfoque supuestamente más simple, si conoce y especifica los campos por adelantado:

mysql -uroot -ppassword --database=dbtest 
  -e "select concat(field1,',',field2,',',field3) FROM tabletest" > tabletest.csv

¡Buena suerte!

 83
Author: Steffen Opel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-02 20:41:52

Estoy usando el framework Yii en EC2 conectándome a RDS MySQL. La clave es usar fputcsv(). Lo siguiente funciona perfectamente, tanto en mi localhost como en producción.

$file = 'path/to/filename.csv';
$export_csv = "SELECT * FROM table";

$qry = Yii::app()->db->createCommand($export_csv)->queryAll();

$fh = fopen($file, "w+");
foreach ($qry as $row) {
    fputcsv($fh, $row, ',' , '"');
}
fclose ($fh);
 0
Author: user2700214,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-20 14:22:15