LOAD DATA LOCAL INFILE自定义值

时间:2012-10-18 22:57:21

标签: mysql

如何使用LOAD DATA LOCAL INFILE添加自定义值? 列time_added是第7列,文件只有第一列和第二列的2个值。对于第7列,time_added我想在从文件加载时使用unix时间戳。

此代码无效:

$result = mysql_query("LOAD DATA LOCAL INFILE '{$myFile}' INTO TABLE {$table} FIELDS TERMINATED BY ':' LINES TERMINATED BY '\n' SET `time_added`=unix_timestamp()");

2 个答案:

答案 0 :(得分:1)

为什么这不起作用?

LOAD DATA INFILE 'file.txt'
  INTO TABLE t1
  (column1, column2)
  SET column7 = unix_timestamp();

答案 1 :(得分:1)

@iouri给出的答案表明了解决问题的关键要素,即.csv文件(column1, column2)填充的列的明确列表。此行通知LOAD函数在从.csv文件加载数据时仅考虑这些列,并避免类似于Row 1 doesn't contain data for all columns的错误。

您仍需要在表定义中列出所有列,包括自定义列。此外,括号中列出的列名称应与表定义中定义的列的名称匹配。例如,如果表定义指定了两个名为userid的列,那么您需要将行(user, id)放在SET column7 = unix_timestamp()行之上。

您可能还想仔细检查是否需要LOAD DATA LOCAL INFILE而不是LOAD DATA INFILE(否LOCAL)。正如load-data的文档中所指定的,LOCAL关键字会影响文件的预期位置,并且必须正确配置服务器和客户端以允许使用LOCAL选项。