2015-11-10 52 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