2012-03-02 3 views
42

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

+1

Флаг '' mysql' '--batch' выводит поля с разделителями табуляции, при этом содержимое экранируется. Это общий формат и не требует перевода на .csv, который, когда это делается с помощью 'sed', может привести к искаженным данным в угловых случаях. –

ответ

68

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

Пользователь fpalero provides an alternative и якобы простой подход, если вы знаете, и указать поля авансом:

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

удачи!

+1

Это сработало отлично, спасибо! – Kenny

+0

получение ошибки 'ERROR 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' (2) ' –

+0

Проблема здесь в том, что у вас есть огромное количество данных для дампа, вы получите ошибку в памяти. – Halfgaar

0

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

$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); 
Смежные вопросы