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
Odpowiedz
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!
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);
'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. –