我可以将硬编码字符串与MySQL LOAD DATA INFILE中的列连接起来吗?

时间:2014-10-02 09:26:49

标签: mysql sql load-data-infile

我有一个带有一些MySQL命令的文件,用于将单个列加载到数据库表中:

TRUNCATE TABLE datamap;

LOAD DATA LOCAL INFILE 'datamap.txt'
INTO TABLE datamap
Fields terminated by  ','
enclosed by    '"'
escaped by    '^'
Lines terminated by '\r\n'
(datapath);

数据路径文件包含文件及其目录的列表,即x:\ files \ filename1.txt

所有文件现在都在一个目录中,我想将路径硬编码到上面的命令中,这样我只能加载文件名,但是将完整路径保存到我的表中的列中。我知道我可以在上面添加一个额外的UPDATE语句,以便在我加载它之后更新表中的每一列,但这看起来效率不高。

LOAD DATA INFILE命令是否支持将固定字符串与从文件读入的数据连接起来?

2 个答案:

答案 0 :(得分:3)

TRUNCATE TABLE datamap;

LOAD DATA LOCAL INFILE 'datamap.txt'
INTO TABLE datamap
Fields terminated by  ','
enclosed by    '"'
escaped by    '^'
Lines terminated by '\r\n'
(col1, col2, @my_variable)
SET col3 = CONCAT('x:\files\', @my_variable);

答案 1 :(得分:2)

http://dev.mysql.com/doc/refman/5.6/en/load-data.html


LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    ...
    [(col_name_or_user_var,...)]
    [ SET col_name = expr,...]

  

处理输入行时,LOAD DATA将其拆分为字段,并根据列/变量列表和SET子句使用这些值(如果存在)。然后将生成的行插入表中。