2012-03-02 18 views
42

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

+1

'mysql''s' --batch' marca campos separados por tabulaciones, con los contenidos escapados. Este es un formato común y no debería requerir traducción a .csv, que cuando se hace con 'sed' podría dar como resultado datos truncados en casos de esquina. –

Respuesta

68

Presumiblemente está intentando exportar desde una base de datos Amazon RDS a través de una consulta SELECT ... INTO OUTFILE, que produce este problema de hecho comúnmente encontrado, consulte p. Ej. export database to CSV. El respectivo AWS team response confirma su asunción de falta de acceso al servidor que impide una exportación como esa, y sugiere un enfoque alternativo también exportando sus datos en formato CSV seleccionando los datos en el cliente de línea de comando mysql y canalizando la salida para reformatear los datos como CSV, así:

usuario fpalero provides an alternative y el enfoque supuestamente más simple, si usted sabe y especificar los campos adelantado:

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

Buena suerte!

+1

Esto funcionó muy bien, ¡gracias! – Kenny

+0

obteniendo un error 'ERROR 2002 (HY000): No se puede conectar al servidor MySQL local a través del socket '/var/lib/mysql/mysql.sock' (2) ' –

+0

El problema aquí es si usted tiene una enorme cantidad de datos para volcar, obtendrá un error de falta de memoria. – Halfgaar

0

Estoy usando Yii Framework en EC2 conectando con RDS mySQL. La clave es usar fputcsv(). Lo siguiente funciona perfectamente, tanto en mi servidor local 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);