【问题标题】:Data truncated when trying to import CSV file尝试导入 CSV 文件时数据被截断
【发布时间】:2013-10-06 14:04:14
【问题描述】:

您好,这是我的负载声明:

load data local infile 'C:/GeoIPCountryWhois.csv' into table geolocation fields terminated by ','
  enclosed by '"'
  lines terminated by '\n';


30 row(s) affected, 1 warning(s):
1265 Data truncated for column 'cn' at row 30
Records: 30  Deleted: 0  Skipped: 0  Warnings: 1



CREATE TABLE `geolocation` (
  `start_ip` char(15) NOT NULL,
  `end_ip` char(15) NOT NULL,
  `start` int(10) unsigned NOT NULL,
  `end` int(10) unsigned NOT NULL,
  `cc` char(2) NOT NULL,
  `cn` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8

我发现问题很可能出在下面一行,因为韩国的逗号表示新字段的开头。

1.11.0.0,1.11.255.255,17498112,17563647,KR,"韩国"

我可以删除所有逗号,但我可以以某种方式更改加载语句吗?

【问题讨论】:

  • 为什么只有一个字段用引号括起来?
  • 不确定从我能看到的内容中只有 cn 中文本中有逗号的字段用引号括起来。

标签: mysql sql csv geoip


【解决方案1】:

我在 mysql 中的数据现在还可以。 我改变了什么:

在 GeoIPCountryWhois 文件中 - 我在 excel 中使用 CTRL+H 从“韩国、共和国”之类的名称中删除“,” --> “大韩民国” .我也删除了所有 "

我必须在mysql中进行更改

start bigint(10) 无符号非空, end bigint(10) 无符号非空, 因为表“start”和“end”中的“128.0.0.0”出现问题(与表末尾相同的最大 int 大小 - 重复)

从 phpmyadmin 导入 csv: (如果需要翻译,请告诉我..)

【讨论】:

    【解决方案2】:

    您应该使用OPTIONALLY ENCLOSED BY 而不是ENCLOSED BY。

    http://dev.mysql.com/doc/refman/5.1/en/load-data.html

    在语句中添加 OPTIONALLY 可使您的 CSV 保持其当前形式。如果没有 OPTIONALLY 关键字,则预计每个值都会有引号。

    【讨论】:

    • 感谢您的回答,尽管最后一行是 '1.11.0.0'、'1.11.255.255'、'17498112'、'17563647'、'KR'、'"Korea, Republic of",但仍然失败1.12.0.0,1.15.255.255,175636'
    • 你加了那些单引号吗?使用 OPTIONALLY 关键字时不需要它们。查看我发布的链接并在页面上找到 ENCLOSED BY 关键字。当它进入 OPTIONALLY 选项时,有一个示例与您要实现的目标非常相似。
    • LINES TERMINATED BY '\r\n' 与 OPTIONALLY ENCLOSED BY '"' 的组合修复了它。谢谢
    猜你喜欢
    • 2015-11-26
    • 2011-07-30
    • 2013-01-23
    • 2022-10-19
    • 2016-05-22
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多