简体   繁体   English

在Ruby / Rails中如何在MySQL中使用load命令?

[英]How to use the load command with MySQL in Ruby/Rails?

In MySQL, I can run: 在MySQL中,我可以运行:

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

However, in my Ruby program: 但是,在我的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)

The output is: 输出为:

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>'

What's wrong with this code? 此代码有什么问题?

Remove the space in ENCLOSED BY ' \\"' 删除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;"

You may also find useful the %Q[] Ruby syntax . 您可能还会发现%Q[] Ruby语法有用。 It's analog of "" , but you don't need to escape " inside the string: 它类似于"" ,但是您不需要在字符串中转义"

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;]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM