【发布时间】:2014-09-16 01:08:54
【问题描述】:
当我想导入 csv/excel 文件但我希望内容位于特定列中时该怎么做?
我的数据库中有 6 列。我们就叫它a、b、c、d、e、f吧。
我想从 excel 文件中向 c、d、e 中插入内容。 a、b、f列的内容会自动生成。
我正在使用 LOAD DATA INFILE 脚本。
【问题讨论】:
当我想导入 csv/excel 文件但我希望内容位于特定列中时该怎么做?
我的数据库中有 6 列。我们就叫它a、b、c、d、e、f吧。
我想从 excel 文件中向 c、d、e 中插入内容。 a、b、f列的内容会自动生成。
我正在使用 LOAD DATA INFILE 脚本。
【问题讨论】:
一种选择是将用户定义的变量指定为字段的目标,以代替 LOAD DATA 语句末尾的列列表中的列名。
例如(省略大部分语法):
LOAD DATA ...
...
(@dummy1, @dummy2, c, d, e, @dummy3)
一行中的第一个字段将分配给用户定义变量@dummy1,第二个字段分配给另一个用户定义变量,第三、第四和第五个字段将分配给c、d和e列(分别),第六个字段将被分配给另一个用户定义的变量。
如果要为作为表达式结果的列提供值,可以使用 SET 子句...
LOAD DATA ...
...
(@a, @b, c, d, e, @dummy3)
SET a = UPPER(@a)
, b = STR_TO_DATE(@b,'%m/%d/%Y')
, f = CONCAT(@a,@b)
更新
如果您在 csv 中只有三个字段,并且您想将第一个字段分配给列 c,将第二个字段值分配给列 d,并将第三个字段值分配给列 e...
LOAD DATA ...
...
(c, d, e)
(col_or_user_var,...) 列表中列名的位置决定了将哪个字段值分配给哪个列。要“跳过”一个字段,请将其分配给用户定义的变量...文件中的字段必须分配给某些内容,如果您不想将其分配给列,请将其分配给用户定义的变量。
您的问题不清楚文件中有多少字段,以及应将哪个字段分配给哪一列。
【讨论】: