1

如何使用 LOAD DATA LOCAL INFILE 添加自定义值?time_add 列是第 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()");
4

2 回答 2

2

为什么这行不通?

LOAD DATA INFILE 'file.txt'
  INTO TABLE t1
  (column1, column2)
  SET column7 = unix_timestamp();
于 2012-10-19T05:09:58.980 回答
2

@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(no LOCAL)。正如load-data文档中所指定的,LOCAL关键字会影响文件的预期位置,并且必须正确配置服务器和客户端以允许使用该LOCAL选项。

于 2016-01-24T05:51:57.937 回答