3

我正在使用一个使用句点“。”的 CSV 文件。符号来表示一个空值。例如,

item  weight  unit_price
 1      5.1       10
 2      .         20
 3      7.5       30
 4      .         40
 5      2.0       50

使用以下命令将其读入 MySQL (v. 5.5) 中的表:

CREATE TABLE products(
  item SMALLINT NOT NULL,
  weight float DEFAULT NULL,
  unit_price SMALLINT);

LOAD DATA INFILE ".../data.txt"
IGNORE
INTO TABLE products
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\r\n"
IGNORE 1 LINES;

LOAD DATA 块中的 IGNORE 关键字强制转换 '.' 到 0 - 有没有办法可以将它设置为 NULL 呢?

我尝试过的唯一解决方法是:

LOAD DATA INFILE ".../data.txt"
IGNORE
INTO TABLE products
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\r\n"
IGNORE 1 LINES
(item,
 @weight,
 unit_price
)
SET
 weight = if(@weight = '.', NULL, @weight);

然而,我正在使用的实际数据有超过 1000 万行和 15 列,其中 '.' 用于表示空值。有没有更简洁的方法默认为空?

4

1 回答 1

0

使用 csv 中的查找和替换工具取出 . 并用 ""(nothing) 替换,然后当你加载它时,它会自动为重量列下的那一行输入 NULL

于 2012-04-28T17:57:17.987 回答