2015-04-02 43 views
0

在MySQL中,我可以运行:如何在Ruby/Rails中使用load命令和MySQL?

LOAD DATA LOCAL INFILE "/home/pt/test/bal.csv" INTO TABLE bal FIELDS 
TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '"' IGNORE 1 
LINES; 

然而,在我的Ruby程序:

str="LOAD DATA LOCAL INFILE "/home/pt/test/bal.csv" INTO TABLE bal 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '"' 
IGNORE 1 LINES;" 

puts str 

dbh.query(str) 

输出是:

LOAD DATA LOCAL INFILE "/home/pt/test/bal.csv" INTO TABLE bal FIELDS 
TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '"' IGNORE 1 
LINES; 

/home/pt/test/ptb.rb:34:in `query': Field separator argument is not what 
is expected; check the manual (Mysql::Error) 
from /home/pt/test/ptb.rb:34:in `<main>' 

有什么不对的代码?

+0

海峡= “LOAD DATA LOCAL INFILE \”/家/ PT /测试/ bal.csv \” INTO TABLE BAL FIELDS '''''''''''''''''''' IGNORE 1 LINES;“ 试试这个会工作.. :) – 2015-08-24 11:55:57

回答

0

ENCLOSED BY ' \"'

str="LOAD DATA LOCAL INFILE \"/home/pt/test/bal.csv\" INTO TABLE bal FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES;" 

删除空格您还可以找到有用的%Q[]Ruby syntax。它的""模拟,但你不需要逃避"里面的字符串:

str=%Q[LOAD DATA LOCAL INFILE "/home/pt/test/bal.csv" INTO TABLE bal FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;] 
+0

你试过%Q []语法吗? – 2015-04-02 10:14:23

+0

我已经做了,但它不工作的主要错误是:字段分隔符参数不是预期的;请检查/home/pt/test/ptb.rb:34:in' – 2015-04-02 10:17:26

+0

中的手册(Mysql :: Error)是否可以在不做任何更改的情况下复制并粘贴此代码:dbh.query%Q [LOAD DATA LOCAL INFILE“/ home/pt/test/bal.csv“INTO TABLE bal FIELDS TERMINATED BY','ENCLOSED BY''''TERMINATED BY'\ n'IGNORE 1 LINES;] – 2015-04-02 10:21:32