2011-08-15 46 views
1

我目前正在用mysql导入一个字典,它的单词由_分隔。我想知道如何指定单词由_分隔。例如,话是这样:加载数据infile用“_”分隔单词

Super_Mario 
Stack_Overflow 
Another_Word 

所以每一行随后将被存储为:

Super Mario 
Stack Overflow 
Another Word 

我有这个疑问现在:

LOAD DATA LOCAL INFILE 
C:/upload/dictionary.csv 
INTO TABLE dictionary 
fields terminated by ',' lines terminated by '\n' 

我将不得不使用fields terminated by '_'

回答

2

没有,你只需要使用SET条款(就像在一个UPDATE)设置该字段的值用字符串REPLACE()的操作替换带空格的下划线。

LOAD DATA LOCAL INFILE 
C:/upload/dictionary.csv 
INTO TABLE dictionary (@var1) 
SET your_column_name = REPLACE(@var1, '_', ' ') 

INTO TABLE dictionary(@var1)位只是意味着“只有一个我感兴趣的文件中列,我想将其存储在@var1,所以我可以在我的SET条款之后使用它,而不是把它的直接进入专栏。“在输入文件有多个列时,如何使用the documentation for LOAD DATA INFILE中的“SET子句”进行Ctrl + F查看如何使用SET子句。

0

fields terminated by '_'会解释每一个字由_分离作为新列

所以Super_Mario,STACK_OVERFLOW和Another_Word将分别结束了在每行两列。如果你的整个词典是由两个单词组成的,而你的词典表有两列,它会起作用,但我感觉并不是你文件中的每个单词都会是两个单词

如果你想存储每个单词在文件中作为一个单独的列,但所有的_ s用空格替换,你可以在之后做这样的导入(或者做@Jordan所说的并且做为导入的一部分,这对我来说听起来更好)

UPDATE dictionary SET columnname = replace(columnname,'_',' ')

+0

我试过ESCAPE BY'_'那个工作...但我仍然需要他们之间的空间:p – re1man