在本地机器上工作的一般 LOAD DATA INFILE 语法是:
LOAD DATA [LOW_PRIORITY | CONCURRENT] LOCAL INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
我正在用 Ruby 编写一个程序,它应该能够将各种 CSV 导入 MySQL 表。
CSV 文件完美地存储在变量中,并获取标题并完美地创建表。问题是我得到的每个 CSV 文件都不同,LOAD DATA LOCAL INFILE
必须修改参数才能识别 CSV 文件格式。
例如,在一个 CSV 中,该LINES TERMINATED BY
选项必须设置为'\n'
,而在另一个 CSV 中,该选项必须设置为'\r'
。同样,在一个 CSVESCAPED BY '[char]'
中必须存在才能正确导入,而在另一个中则不能存在。
有没有可能提供多个值来检查的方法?喜欢TERMINATED BY '\n or \r'
还是ENCLOSED BY '\ or "'
?
EDIT:
当我做:
FasterCSV.foreach(csv) do |row|
@first = row
break
end
我得到第一行。是否有可能检测到行终止符,无论是它的还是\n
来自那一行?\r\n
\r