LOAD DATA LOCAL INFILE

D
На сайте с 28.06.2008
Offline
996
271

Загружаю в базу через LOAD DATA LOCAL INFILE этот файл http://download.geonames.org/export/dump/admin1CodesASCII.txt

В нем 3963 строки.

В базе в итоге оказывается 3910.

Нахожу визуально в файле строки, которые не попали в базу - они ничем внешне от соседних попавших в базе не отличаются.

В чем причина бага?

Например 58 и 61 строки попали в базу, а 59 нет, почему?

код

database=geo
table=admin1_codes_ascii

cd /tmp
wget http://download.geonames.org/export/dump/admin1CodesASCII.txt

/usr/bin/mysql $@ -e 'CREATE DATABASE IF NOT EXISTS '$database';
USE '$database'; CREATE TABLE IF NOT EXISTS '$table' (
`admin_code` varchar(10) DEFAULT NULL,
`name` varchar(200) DEFAULT NULL,
`asciiname` varchar(200) DEFAULT NULL,
`id` int(11) NOT NULL,
PRIMARY KEY (`admin_code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;'

/usr/bin/mysql $@ --local-infile=1 -e "USE $database; TRUNCATE $table; SET character_set_database = utf8; LOAD DATA LOCAL INFILE '/tmp/admin1CodesASCII.txt' INTO TABLE $table FIELDS TERMINATED BY \"\t\" LINES TERMINATED BY \"\n\" (admin_code, name, asciiname, id);"



---------- Добавлено 28.07.2019 в 09:26 ----------

Проблему нашел - `admin_code` varchar(10) DEFAULT NULL,
Создатель базы не предполагал что значение может быть больше 10, а они есть!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий