我有一个CSV文件,其中包含以下内容:
NEW YORK, NYC
LOS ANGELES, LA
然而,有一个特例是
WASHINGTON,DC, DC
因为在华盛顿的情况下有两个逗号,我无法正确地将文件加载到DB,因为该表只有两列。 我不想用java代码检查每行包含多个逗号,并将华盛顿行编辑为“WASHINGTON,DC”,DC。
我想知道有没有办法重写旧的LOAD DATA查询以处理这种特殊情况?
目前不正确的结果:
+--------+--------------+
| value | mapped_value |
+--------+--------------+
| NEW YORK | NYC |
| LOS ANGELES | LAX |
| WASHINGTON | DC |
+--------+--------------+
预期结果应如下所示:
+--------+--------------+
| value | mapped_value |
+--------+--------------+
| NEW YORK | NYC |
| LOS ANGELES | LAX |
| WASHINGTON,DC | DC |
+--------+--------------+
表格查询:
CREATE TABLE city_map (value varchar(255) , mapped_value varchar(255));
我当前的“LOAD DATA LOCAL INFILE”查询如下:
LOAD DATA LOCAL INFILE '/tmp/city.csv' INTO TABLE city_map FIELDS\n TERMINATED BY ',';
答案 0 :(得分:1)
你的CSV也应该有双引号的分隔符"封闭你的领域。 CSV中的分隔符不够。
如果您使用文本编辑器打开CSV,则应该看到它们,否则您的CSV无效,因为您的逗号数量超出了所需数量。
LOAD DATA LOCAL INFILE '/tmp/city.csv' INTO TABLE city_map FIELDS TERMINATED BY ',' ENCLOSED BY '"';