2015-11-10 54 views
0

當我嘗試使用ruby從MySQL數據庫創建CSV文件時,沒有創建文件並且沒有返回錯誤。這是在Windows 10機器上。使用Ruby從MySQL DB創建CSV文件而不是創建文件

這裏是我的代碼:

def dump_csv 
    Dir.mkdir 'C:\temp' unless File.exists? 'C:\temp' 
    <<-SQL 
     SELECT * 
     FROM #{@table} 
     GROUP BY a, b, c, d 
     HAVING COUNT(*) < 40 
     INTO OUTFILE 'C:\\\\temp\\\\temp.csv' 
     FIELDS TERMINATED BY ',' 
    SQL 
end 

我知道這不是一個權限錯誤,因爲如果我輸入這句話到MySQL直接它工作得很好。有任何想法嗎?或者以另一種方式去解決它?

謝謝!

+0

http://stackoverflow.com/q/2774808 – Drew

+0

我已經嘗試了一堆斜線,沒有工作。我很確定它應該是'\\\\',但我已經嘗試了8個斜槓,沒有去... – ChrisD

+0

如何去其他bizarro的方式看到http://stackoverflow.com/q/ 7173000 – Drew

回答

0

您沒有執行SQL。

構建

<<-SQL 
    ... 
SQL 

只是構建一個字符串「SQL」作爲結束標誌

+0

謝謝,倍增檢查,你是對的! – ChrisD

0

我只是快速瀏覽一下,但可能會因爲您嘗試創建目錄並檢查FILE是否存在而切換爲File.exists?Dir.exists?。我會將它映射得更清晰一些,類似於以下內容:

def temp_file 
    temp_directory = 'C:\temp' 
    Dir.mkdir(temp_directory) unless Dir.exists?(temp_directory) 
    file = "#{temp_directory}/temporary_csv.csv" 
end 
File.open(temp_file, 'w') << SQL