2012-03-02 8 views
42

Mam bazę danych mysql działającą w Amazon RDS i chcę wiedzieć, jak wyeksportować całą tabelę do formatu csv. Obecnie używam serwera mysql w systemie Windows do wysyłania zapytań do bazy danych Amazon, ale kiedy próbuję uruchomić eksport, pojawia się błąd, prawdopodobnie dlatego, że nie ma dedykowanego serwera plików dla Amazon RDS. Czy jest jakieś rozwiązanie tego problemu?Eksportowanie tabeli z Amazon RDS do pliku csv

+1

'Flaga' --batch' mysql wyprowadza pola oddzielone tabulatorami, z zawartością z ewidencją. Jest to popularny format i nie powinien wymagać tłumaczenia na .csv, co w przypadku "sed" może potencjalnie doprowadzić do zniekształconych danych w przypadkach narożnych. –

Odpowiedz

68

Prawdopodobnie próbujesz wyeksportować dane z bazy danych Amazon RDS za pomocą zapytania SELECT ... INTO OUTFILE, co pozwala uzyskać ten powszechnie napotykany problem, zobacz np. export database to CSV. Odpowiedni AWS team response potwierdza twoje założenie, że brakuje dostępu do serwera, co uniemożliwia eksport, i sugeruje również alternatywne podejście, eksportując swoje dane w formacie CSV, wybierając dane w kliencie linii poleceń mysql i wyprowadzając dane wyjściowe w celu ponownego sformatowania danych jako CSV, tak:

użytkownika fpalero provides an alternative i rzekomo prostsze podejście, jeśli wiesz i określić pola góry:

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

powodzenia!

+1

To działało świetnie, dzięki! – Kenny

+0

Wystąpił błąd 'ERROR 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL za pośrednictwem gniazda '/var/lib/mysql/mysql.sock' (2) ' –

+0

Problem dotyczy tego, czy masz ogromną ilość dane do zrzutu, otrzymasz błąd braku pamięci. – Halfgaar

0

Używam Yii Framework na EC2 łączącego się z RDS mySQL. Kluczem jest użycie fputcsv(). Poniższe działa idealnie, zarówno na moim lokalnym hostingu, jak i produkcji.

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