我们有一个大的制表符分隔的文本文件(大约120,000条记录,50MB),我们正试图使用mysqlimport将其推入MySQL。有些字段用双引号括起来,有些则没有。我们正在使用fields-optionally-enclosed-by='\"'
开关,但问题是某些字段值本身包含双引号(表示英寸),因此分隔字段值可能是“ABCDEF19”“。有意义吗?
我们无法控制文件的来源,因此我们无法更改格式。我尝试删除fields-optionally-enclosed-by
开关,但随后导入了围绕值的双引号。
答案 0 :(得分:1)
您可以使用引号(字段 - 可选 - 封闭 - 删除开关)导入它,然后运行检查,如果该值在开头和结尾都有双引号(假设这些值在开头没有英寸)然后从开头和结尾截断1个字符,以删除从导入中获得的额外引号。
编辑:在阅读了kekoav的回复后,我必须同意,如果你能够在导入之前操作文件,这将是一个更明智的选择,但如果你之后被迫删除引号,你可以使用这样的东西:< / p>UPDATE table
SET column =
IF(
STRCMP(LEFT(table.column,1),'"'),
MID(table.column,2,(LENGTH(table.column)-2)),
table.column
)
表格中的每个“列”
答案 1 :(得分:1)
如果您的数据在字段引文的正文中包含引号而没有以某种方式划分,则表示您遇到问题。你不能保证mysqlimport会正确地做到这一点。
在尝试以这种方式插入数据之前先按下数据。
幸运的是,它是制表符分隔的,所以你可以运行一个正则表达式来用分隔版本替换引号,然后告诉mysqlimport分隔符。