使用Ruby从MySQL DB创建CSV文件而不是创建文件

时间:2015-11-10 19:00:14

标签: mysql sql ruby csv file-io

当我尝试使用ruby从MySQL数据库创建CSV文件时,不会创建任何文件,也不会返回错误。这是在Windows 10计算机上。

这是我的代码:

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,它就可以了。有任何想法吗?还是另一种方式呢?

谢谢!

2 个答案:

答案 0 :(得分:0)

我只是快速浏览了一下,但可能会为File.exists?切换Dir.exists?,因为您正在尝试创建目录并检查是否存在FILE。我会把它更清楚地映射到类似的东西:

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

答案 1 :(得分:0)

您没有执行SQL。

构造

<<-SQL
  ...
SQL

只是构造一个以“SQL”作为结束标记的字符串