2016-04-02 2 views
2

У меня проблема с загрузкой набора данных geonomes. Heres мой процесс:Как загрузить geonames.org dataset в mysql

первым я создаю мои базы данных 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; 

СЛЕДУЮЩИЙ, где моя проблема, я стараюсь, чтобы загрузить данные в ПОЛУЧАЕТ:

Последнее сообщение об ошибке

Invalid utf8 строка символов: '' Afikanisitani, 'Apekanikana, A Пу Хан (Афганистан п), А Phu HAN '

Heres мой запрос для загрузки данных:

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); 

Я бегу мои запросы в сиквеле про командную строку.

+0

Предполагая, что ваши данные UTF8, и учитывая, что таблица правильно настроена для UTF8, проблема, скорее всего, у вашего клиента (продолжение pro). Он настроен на работу с utf8, или он по умолчанию работает на латинском языке или ASCII или UTF16 или что-то еще странное? – JNevill

+0

@JNevill - У меня такая же проблема. Я не использую Sequel Pro, я запускаю команду MySQL в терминале Ubuntu, которая всегда работала до сегодняшнего дня. Любые другие идеи? – TomDogg

ответ

1

я получал the same error on MySQL 5.7.13 - что было странно, так как импорт файла allCountries.txt, казалось, отлично работает в MySQL 5.6

Не уверен what exactly changed between MySQL 5.6 and 5.7 но это что-то делать с по умолчанию character_set и collation в 5,7

Основываясь на this Q&A я обновил набор символов по умолчанию для utf8mb4, который затем позволил мне загрузить файл allCountries.txt без проблем

Вход в MySQL в Termina л с mysql -u root -p и выполнить следующий запрос:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

MySQL по умолчанию 5.7.13 ответ выглядел так:

+--------------------------+-------------------+ 
| Variable_name   | Value    | 
+--------------------------+-------------------+ 
| character_set_client  | utf8    | 
| character_set_connection | utf8    | 
| character_set_database | latin1   | 
| character_set_filesystem | binary   | 
| character_set_results | utf8    | 
| character_set_server  | latin1   | 
| character_set_system  | utf8    | 
| collation_connection  | utf8_general_ci | 
| collation_database  | latin1_swedish_ci | 
| collation_server   | latin1_swedish_ci | 
+--------------------------+-------------------+ 

(Работа над OS X), то мне нужно, чтобы добавить файл в my.cnf/etc/my.cnf
- вы можете скопировать его:
sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
- назначить my.cnf к _mysql или он не сможет прочитать его (общая проблема, если в 01 существуетфайл, но либо принадлежит корню или слишком разрешительный разрешения)
sudo chown _mysql /etc/my.cnf
- обновить конфигурационный файл, чтобы включать в себя следующее (в соответствующих разделах - просто добавить их, если они не существуют)

[client] 
default-character-set = utf8mb4 
[mysqld] 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
[mysql] 
default-character-set = utf8mb4 

- перезапуск MySQL (следующие команды для OS X):

sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist 
sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist 

- запустить тот же SHOW VARIABLE команду в MySQL и результаты

+--------------------------+--------------------+ 
| Variable_name   | Value    | 
+--------------------------+--------------------+ 
| character_set_client  | utf8    | 
| character_set_connection | utf8    | 
| character_set_database | utf8mb4   | 
| character_set_filesystem | binary    | 
| character_set_results | utf8    | 
| character_set_server  | utf8mb4   | 
| character_set_system  | utf8    | 
| collation_connection  | utf8_general_ci | 
| collation_database  | utf8mb4_unicode_ci | 
| collation_server   | utf8mb4_unicode_ci | 
+--------------------------+--------------------+ 

... сейчас allCountries.txt Загрузка файла должна работать должным образом.

Смежные вопросы