![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Just123 |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Всем привет,помогите пожалуйста решить поставленную задачу:
В базе данных есть номера(~900 штук) телефонов в таком виде:
Требуется приписать к номерами код(495 или 499), если он отсутствует и если номера изменились, обновить их. Номера есть на сайте МГТС и в EXEL файле в следующем виде:
Еще это всё можно конечно сохранить в CSV или занести в БД. Ну и главное, вопрос, как лучше всего решить данную задачу? Очень нужны советы. Спасибо. Это сообщение отредактировал(а) Just123 - 18.2.2010, 09:42 |
||||
|
|||||
Just123 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Мне советовали создать массив, типа такого:
$array_phone['старый код']['старый номер'] = "новый код + новый номер"; Проверять ключи и корректировать старый номер, если ключи совпали, но что-то не подсказывает, что это решение не очень как-то. |
|||
|
||||
skyboy |
|
||||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
SQLite? Oracle? FoxPro? приведение структуры БД - нарушение коммерческой тайны? задачу обновления данных в БД в соответствие с данными в CSV лучше всего решить следующей последовательностью действий: варианта три: 1. из данных в CSV сделать временную таблицу. одним запросом с объединением первой и второй таблицы произвести обновление. 2. сделать поиск/замену прямо в CSV файле, чтоб каждая строка с данными стала корректным UPDATE запросом на SQL 3. пройтись средствами РНР по каждой строке CSV, совершая соответствующие обновления в БД(зависит от количества записей в файле, но потенциально это намного медленнее, чем первые два варианта). давай, так: приведни на основании строки какой должен быть UPDATE запрос, чтоб обновить именно указанный телефон. Добавлено через 5 минут и 16 секунд
а как выглядит телефон, без кода? а с кодом? и главное: возможна ли ситуация, когда в БД телефон без кода(например, 123-45-67), а в файле - две записи:
какой телефон должен остаться в БД? и что делать с телефонами БД, у которых не был указан код и которые не будут указаны в файле? удалять их? мне вообще кажется, что это сервисная операция по чистке данных какой-то телефонной БД, для исправления некорректных номеров. и операция будет выполнена только один раз и потому производительность не критична. верно?
в смысле, корректировать в памяти? если не считать того, что, по твоим слова, "старый код" у телефона в БД может быть не задан, то и такой вариант имеет право на жизнь. |
||||||
|
|||||||
Just123 |
|
||||||||||||||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
MySQL
Нет, структура выглядит следующим образом:
code1 и code2 для каждой записи уникальные.
Где, $new это новый номер, а $code1 уникальный идентификатор. Это при условии, что все остальные манипуляции делает php. (Поиск, сравнение и т.д.) P.S. Спасибо, что откликнулись. Добавлено @ 10:06
1112233
4951112233
Нет, не возможна.
Удалять не нужно, нужно дописать код 495.
Всё верно.
Да, дело в том, что старый код может быть только 495, поэтому если в телефоне не указан код, можно подставить его и проверить старый номер на наличие, если присутствует, исправить его, если нет, просто подставить 495. $array_phone['495']['старый номер'] = "499 новый номер"; Это сообщение отредактировал(а) Just123 - 18.2.2010, 10:07 |
||||||||||||||||||||||
|
|||||||||||||||||||||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
значит, начать с того, что дописать "495" к телефонным номерам длиной в 7 символов. после чего, убедиться, что в базе данных нет телефонов длиной, отличной от 10 символов. они тоже есть в CSV файле? |
|||
|
||||
Just123 |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Нет, в CSV только (старый код) (старый номер) (новый код) (новый номер) Добавлено @ 10:18
Ой, извините, я немного ошибся, у некоторых телефонов, старый код = 499. У 10 телефонов, если точнее. А у некоторых телефонов, новый код == 495. Добавлено через 5 минут и 47 секунд На сайте МГТС, есть еще форма поиска, с помощью которой введя первые 3 символа старого номера, можно узнать новый номер. Может как-то с помощью неё сделать? Я правда, не представляю как именно. Это сообщение отредактировал(а) Just123 - 18.2.2010, 10:20 |
||||
|
|||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Посадить девочку, которая вручную пробьет всю базу. 900 номеров можно уложиться в 1-2 дня. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Just123 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Всё, теперь у всех номеров присутствует код, осталось только проверить, не изменился ли сам номер.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |