Экспорт таблицы из Amazon RDS в файл csv

У меня есть база данных mysql, работающая в RDS Amazon, и я хочу знать, как экспортировать всю таблицу в формат csv. В настоящее время я использую сервер mysql в Windows для запроса базы данных Amazon, но когда я пытаюсь запустить экспорт, я получаю сообщение об ошибке, возможно, потому, что нет специального файлового сервера для amazon RDS. Есть ли какое-либо решение для этого?

Ответ 1

Предположительно, вы пытаетесь экспортировать из базы данных Amazon RDS с помощью запроса SELECT ... INTO OUTFILE, который дает эту часто встречающуюся проблему, см., например, экспортировать базу данных в CSV. Соответствующий ответ команды AWS подтверждает ваше предположение о том, что вам не хватает доступа к серверу, предотвращая такой экспорт, и предлагает альтернативный подход, а также путем экспорта ваших данных в формате CSV путем выбора данных в клиенте командной строки mysql и выводит вывод для форматирования данных как CSV, например:

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

Пользователь fpalero предоставляет альтернативу и, предположительно, более простой подход, если вы знаете и задаете поля upfront:

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

Удачи!

Ответ 2

Я использую Yii Framework для подключения EC2 к RDS mySQL. Ключ должен использовать fputcsv(). Следующее работает отлично, как на моем локальном хосте, так и на производстве.

$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);