
Спустя 13 минут, 45 секунд (13.07.2012 - 12:32) Placido написал(а):
http://www.maxmind.com/app/worldcities
Оговорюсь, сам не скачивал.
Оговорюсь, сам не скачивал.
Спустя 1 час, 7 минут, 1 секунда (13.07.2012 - 13:39) Winston написал(а):
Placido
Видел уже и скачивал, но там txt
а мне нужен дамп БД.
Видел уже и скачивал, но там txt

Спустя 1 час, 31 минута, 53 секунды (13.07.2012 - 15:11) Placido написал(а):
Так есть LOAD DATA INFILE. Для этого:
1. Создаем таблицу (типы полей уже указаны на сайте)
2. Проставляем в файле id для всех строк.
3. Меняем ",," на ",\N,".
4. LOAD DATA INFILE
5. Профит!
Я сделал так (извиняюсь за говнокод - дела по-быстрому, да и файл большой - сразу сделать все замены не хватало выделенной памяти):
1.
2.
3. Прогнал через str_replace два раза, за один не хватало выделенной памяти.
4. В консоли MySQL
5. Результат:
1. Создаем таблицу (типы полей уже указаны на сайте)
2. Проставляем в файле id для всех строк.
3. Меняем ",," на ",\N,".
4. LOAD DATA INFILE
5. Профит!
Я сделал так (извиняюсь за говнокод - дела по-быстрому, да и файл большой - сразу сделать все замены не хватало выделенной памяти):
1.
CREATE TABLE `testcity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`CountryCode` char(2) DEFAULT NULL,
`CityName1` varchar(100) DEFAULT NULL,
`CityName2` varchar(255) DEFAULT NULL,
`Region` char(2) DEFAULT NULL,
`Population` int(10) unsigned DEFAULT NULL,
`Latitude` float DEFAULT NULL,
`Longitude` float DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.
$a = file('C:/.../worldcitiespop.txt', FILE_IGNORE_NEW_LINES);
$i = 1;
foreach ($a as $key => $value)
{
$a[$key] = $i . ',' . $value;
$i++;
}
file_put_contents('C:/.../worldcities_new.txt', implode(PHP_EOL, $a));
3. Прогнал через str_replace два раза, за один не хватало выделенной памяти.
$a = file_get_contents('C:/.../worldcities_new.txt');
file_put_contents('C:/.../worldcities_new.txt', str_replace(',,',',\N,', $a));
4. В консоли MySQL
LOAD DATA INFILE 'C:/.../worldcities_new.txt'
INTO TABLE `testcity` CHARACTER SET CP1251
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';
5. Результат:
3173958 row(s) affected;)
Records: 3173958 Deleted: 0 Skipped: 0 Warnings: 0
Спустя 3 часа, 13 минут, 39 секунд (13.07.2012 - 18:24) redreem написал(а):
Winston
давай почту - скину че есть.
давай почту - скину че есть.
Спустя 11 часов, 7 минут, 30 секунд (14.07.2012 - 05:32) Эли4ка написал(а):
Winston
я сейчас не смогла найти,но на Хабре было..там даже деревни есть..а зачем именно на английском?
я сейчас не смогла найти,но на Хабре было..там даже деревни есть..а зачем именно на английском?

Спустя 2 часа, 23 минуты, 18 секунд (14.07.2012 - 07:55) Winston написал(а):
Placido
Спасибо за объяснение, но в той базе нету регионов, а только коды стран и названия регионов.
Спасибо за объяснение, но в той базе нету регионов, а только коды стран и названия регионов.
Цитата (Эли4ка @ 14.07.2012 - 05:32) |
а зачем именно на английском? |
Для англо-версии сайта.
Проблема решена, спасибо redreem'у!
Спустя 58 минут, 47 секунд (14.07.2012 - 08:54) redreem написал(а):
Winston
кстати там встречаются в поле для английского названия - русские. ну это уж просто перепроверить надо. думаю таких записей не так много.
кстати там встречаются в поле для английского названия - русские. ну это уж просто перепроверить надо. думаю таких записей не так много.
Спустя 1 день, 33 минуты, 22 секунды (15.07.2012 - 09:27) Эли4ка написал(а):
Цитата |
Для англо-версии сайта |
ну можно сделать русские названия городов оставить русскими,английские-английскими,французскими-французскими и т.д..