Ruby 相对较新,正在运行:Ruby 1.9.2 和 MySQL 5.5.19
我有一个充满数据的 csv 文件,我想将这些数据添加到 mysql 数据库上的现有表中。csv 文件没有标题。是的,我知道关于这个话题已经有多个问题了。以下是它的分解方式:
答案 #1:使用 LOAD DATA INFILE 不幸的是,LOAD DATA INFILE 给了我以下错误:“无法获取 'filename.csv' 的统计信息(错误代码:2)”这似乎是某种权限问题。我已经直接在 mysql 提示符下(以 root 身份)和通过 Ruby 脚本进行了尝试。我在 csv 文件上尝试了各种 chmod 选项,以及将 csv 文件移动到其他用户说它适用于他们的各种目录。没运气。无论如何,此时大多数人都建议...
答案 #2:使用 LOAD DATA local INFILE 不幸的是,这也会返回错误。显然本地 infile 是默认关闭的 mysql 选项,因为它存在安全风险。我试过打开它,但除了错误什么都没有,例如:ERROR 1148 (42000): The used command is not allowed with this MySQL version and also undefined method `execute' for # (NoMethodError)
答案 #3:我可以找到各种涉及 Rails 的答案,但不适合这种情况。这不适用于 Web 应用程序(尽管 Web 应用程序可能稍后会访问它),我现在只是尝试将数据添加到数据库中,作为一次性的事情来进行一些数据分析。
Ruby 文件应该非常简单:
require 'rubygems'
require 'csv' (or fastercsv?)
require 'mysql'
db = mysql.connect('localhost','root','','databasename')
CSV.foreach('filename.csv') do |row|
?????
db.execute("INSERT INTO tablename ?????")
end
PS 非常感谢提前。请不要回答指向使用 LOAD DATA INFILE 或 LOAD DATA LOCAL INFILE 的答案。已经浪费了足够多的时间试图让它发挥作用......