2012-03-02 110 views
42

我有一個在Amazon RDS中運行的mysql數據庫,我想知道如何將整個表導出爲csv格式。我目前在Windows上使用mysql服務器來查詢亞馬遜數據庫,但是當我嘗試運行導出時,出現錯誤,可能是因爲沒有用於亞馬遜RDS的專用文件服務器。有沒有解決這個問題的方法?將Amazon RDS中的表導出爲csv文件

+1

'mysql'的'--batch'標誌輸出製表符分隔的字段,內容轉義。這是一種常見的格式,不應該要求轉換爲.csv,當使用'sed'完成時可能會導致角落案例中的數據被破壞。 – 2014-06-20 22:07:34

回答

68

推測您試圖從Amazon RDS數據庫通過SELECT ... INTO OUTFILE查詢導出,這會產生這種確實經常遇到的問題,請參閱export database to CSV。各自AWS team response確認您假設缺乏服務器訪問阻止導出這樣,並建議一種替代方法,通過在CSV命令行客戶端中選擇數據導出您的數據並管道輸出重新格式化數據爲CSV,就像這樣:

用戶fpalero provides an alternative,也應該更簡單的方法,如果你知道和前期指定的字段:

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

祝你好運!

+1

這很好,謝謝! – Kenny 2012-03-06 18:30:52

+0

獲取錯誤'ERROR 2002(HY000):無法通過套接字連接到本地MySQL服務器'/var/lib/mysql/mysql.sock'(2) ' – 2013-06-30 21:48:36

+0

這裏的問題是,如果您有大量的要轉儲的數據,您將收到內存不足錯誤。 – Halfgaar 2015-08-06 12:26:32

0

我在EC2上使用Yii Framework連接到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);