加载数据infile用“_”分隔单词

时间:2011-08-15 23:20:23

标签: mysql sql

我目前正在mysql中导入一个字典,其中包含由_分隔的单词。我想知道如何指定_分隔的单词。例如,单词是这样的:

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 个答案:

答案 0 :(得分:2)

不,您只需使用SET子句(就像在UPDATE中一样)来设置字段的值,并使用以空格替换下划线的字符串REPLACE()操作的结果。

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

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

答案 1 :(得分:0)

fields terminated by '_'会将_分隔的每个单词解释为新列

所以Super_Mario,Stack_Overflow和Another_Word都会在每一行中以两列结尾。如果你的整个字典由两个单词组成,而你的字典表有两列,那么它会起作用,但我觉得你文件中的每个单词都不会是两个单词

如果您想将文件中的每一行存储为单个列,但所有_替换为空格,则可以在导入后执行此类之类的操作(或做什么@Jordan说并做它作为导入的一部分,这对我来说听起来更好)

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