【发布时间】:2016-04-02 17:34:59
【问题描述】:
我在加载 geonomes 数据集时遇到问题。这是我的流程:
首先我创建我的数据库GEONAMES
然后我创建我的表:
CREATE TABLE `geoname` (
`geonameid` int(11) NOT NULL,
`name` varchar(200) DEFAULT NULL,
`asciiname` varchar(200) DEFAULT NULL,
`alternatenames` varchar(4000) DEFAULT NULL,
`latitude` decimal(10,7) DEFAULT NULL,
`longitude` decimal(10,7) DEFAULT NULL,
`fclass` char(1) DEFAULT NULL,
`fcode` varchar(10) DEFAULT NULL,
`country` varchar(2) DEFAULT NULL,
`cc2` varchar(60) DEFAULT NULL,
`admin1` varchar(20) DEFAULT NULL,
`admin2` varchar(80) DEFAULT NULL,
`admin3` varchar(20) DEFAULT NULL,
`admin4` varchar(20) DEFAULT NULL,
`population` int(11) DEFAULT NULL,
`elevation` int(11) DEFAULT NULL,
`gtopo30` int(11) DEFAULT NULL,
`timezone` varchar(40) DEFAULT NULL,
`moddate` date DEFAULT NULL,
PRIMARY KEY (`geonameid`),
KEY `name` (`name`),
KEY `asciiname` (`asciiname`),
KEY `latitude` (`latitude`),
KEY `longitude` (`longitude`),
KEY `fclass` (`fclass`),
KEY `fcode` (`fcode`),
KEY `country` (`country`),
KEY `cc2` (`cc2`),
KEY `admin1` (`admin1`),
KEY `population` (`population`),
KEY `elevation` (`elevation`),
KEY `timezone` (`timezone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci;
接下来是我的问题所在,我尝试加载数据并获取:
最后一条错误信息
无效的 utf8 字符串:''Afikanisitani,'Apekanikana,A Phu Han (Afghanistan),A Phú Hãn'
这是我加载数据的查询:
LOAD DATA LOCAL INFILE 'allCountries.txt'
INTO TABLE geoname
CHARACTER SET 'UTF8'
(geonameid, name, asciiname, alternatenames, latitude, longitude, fclass, fcode, country, cc2, admin1, admin2, admin3, admin4, population, elevation, gtopo30, timezone, moddate);
我正在 sequel pro 命令行中运行我的查询。
【问题讨论】:
-
假设您的数据是 UTF8,并且您的表已正确设置为 UTF8,那么问题很可能出在您的客户端(sequel pro)。它是设置为处理 utf8,还是默认为拉丁语、ASCII 或 UTF16 或其他奇怪的东西?
-
@JNevill - 我有同样的问题。我不使用 Sequel Pro,我在 Ubuntu 的终端中运行 MySQL 命令,直到今天它一直有效。还有其他想法吗?