Здравствуйте!

В исходных данных имеем: таблица Mysql со Странами/Регионами/Городами, таблица Mysql с категориями и файл экселя с организациями.

Задача: написать скрипт для переноса в новую таблицу Mysql данных из Excel файла с учетом данных таблиц Страны/Регионы/Города и категорий.

Мне нужен сам скрипт, так как данные в таблице excel будут меняться. Формат останется.

Поясню. В файле Excel есть поля:

name - название компании.

categories - категории деятельности. Может быть одна или несколько.

city - город

address - улица дом

phone - телефон

url - сайт

hours - часы работы

features - другие данные в формате JSON

При переводе данных надо находить соответствие города из Excel в таблице городов и брать оттуда Id страны, id региона и id города.

Таким образом в новую таблицу заносим:

ID - порядковй номер (с единицы)

country - страна (1 для всех)

region - регион (его id берем из таблицы стран)

city - город (его id бурум из таблицы стран по названию из таблицы Excel)

razdel - раздел (в таблице Excel categories идут через точку с запятой. Берем первое значение и ищем соответствие с таблицей категорий MySQL. Если находим - заносим в новую таблицу ID. Если не находим берем второе значение(если есть) и ищем ему соответствие итд. Если ни одного не найдено пишем: 100)

comment - оставляем пустым

title - название компании (поле name их Excel)

name - оставляем пустым

telephone - phone

adress - address

adressdom - оставляем пустым

adresskor - оставляем пустым

adressstr - оставляем пустым

adressflat - оставляем пустым

url - url

email - оставляем пустым

period - оставляем пустым

aid - для всех устанавливаем 1

date - для первого текущую (формат: 0000-00-00 00:00:00), для второго минус час, для третьего минус 2 часа и тд

status - для всех ok

ip - оставляем пустым.

Создаем поле hours и заносим туда их Excel поле hours - часы работы

Это то, что есть на данный помент в новой базе. Остальное надо добавить (см ниже)

`ID` smallint(9) unsigned NOT NULL AUTO_INCREMENT,

`country` int(4) NOT NULL,

`region` int(4) NOT NULL,

`city` int(4) NOT NULL,

`razdel` int(4) NOT NULL,

`comment` text NOT NULL,

`title` text NOT NULL,

`name` varchar(100) NOT NULL,

`telephone` varchar(50) NOT NULL,

`adress` text NOT NULL,

`adressdom` text NOT NULL,

`adresskor` text NOT NULL,

`adressstr` text NOT NULL,

`adressflat` text NOT NULL,

`url` text NOT NULL,

`email` varchar(50) NOT NULL,

`period` varchar(4) NOT NULL,

`aid` int(9) NOT NULL,

`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`status` varchar(15) NOT NULL,

`ip` varchar(30) NOT NULL,

PRIMARY KEY (`ID`)

Из поля features таблицы Excel вносим остальные данные по схеме (русский текст надо перевести из юникода в кирилицу):

Их этого:

{

type: "enum",

id: "car_brand",

name: "марка",

value: [

"Chevrolet Niva",

"ВАЗ"

],

values: [

"Chevrolet Niva",

"ВАЗ"

]

},

В новой базе mysql создаем поле enum_car_brand (если оно еще не было создано - нужна проверка) и заноси туда данные: Chevrolet Niva, ВАЗ

Из этого:

{

type: "bool",

id: "official_dealer",

name: "официальный дилер",

value: true

},

Создаем поле bool_official_dealer (если оно еще не было создано - нужна проверка) и заносим значение: true

{

type: "bool",

id: "wi_fi",

name: "wi-fi",

value: false

},

Из этого создаем поле bool_wi_fi (если оно еще не было создано - нужна проверка) и заносим значение: false

Дело в том, что не для всех строк в таблице Excel поле features заполнено. А где заполнено могут быть разные переменные.

Но все они сводятся к двум типам: type: "enum" и type: "bool". По id добвляем поле в базу добавляя к названию type (bool или enum). И в значение заносим данные из поля value без кавычек.

Вот еще пример:

{

type: "enum",

id: "auto_insurance_type",

value: [

"КАСКО/ОСАГО"

],

values: [

"КАСКО/ОСАГО"

]

},

Создаем Поле enum_auto_insurance_type заносим значение: КАСКО/ОСАГО

Если не найдено совпадения по городу - заносим эту строку из талицы Excel в отдельный файл - чтобы потом видно было что не прошло по городам.

Если не найдено ни одного совпадения по категориям - заносим эту строку из талицы Excel в отдельный файл, - чтобы было видно каких нет категорий в базе, но в присваиваем ID 100, как написано выше.

И еще в один файл заносим соответствия из поля features по id и name:

id: "wi_fi", name: "wi-fi",

id: "official_dealer", name: "официальный дилер",

Так как поле name в базу mysql не попадает.

Файлы приложил.

12 лет назад
mchuk
50 лет
17 лет в сервисе
Был
3 месяца назад

Выбранный исполнитель

Andrey_Gr
Андрей 
44 года
12 лет в сервисе
Был
11 лет назад
12 лет назад
$50
5 дней
Система требует писать отзыв под каждым проектом, но я не понимаю зачем. Ведь если это уже третье задание которое я доверяю Андрею - значит меня все устраивает.
четко ставит задачу, оплата в срок

Заявки фрилансеров

Andrey_Gr
Андрей 
44 года
12 лет в сервисе
Был
11 лет назад
12 лет назад
  • Похожие заказы

  • $500

    Требуется разработать на основе CMS Drupal сайт мебельной компании... Техническое задание прикреплено... Перед детальным обсуждением проекта жду приблизительные сроки и суммы... С выбранным специалистом в случае удачного окончания проекта возможно длительное сотрудничество.

    Закрыт
    12 лет назад
  • Нужно сделать php класс для работы с API Google Adwords (последней стабильной версии). Все предоставляемые гуглом методы должны быть отображены на соответствующие методы php. Класс должен представлять из себя сервис Symfony 2.2, пригодный для подключения ...

    Закрыт
    12 лет назад
  • Сделать экспорт элементов инфоблока в формате CSV. Разделитель знак: ¥ Помимо стандартных значений свойств (название, активность, теги и т.п.) файл экспорта должен содержать: 1. Комментарии пользователей к элементам инфоблока: дата, автор, ...

    Закрыт
    12 лет назад
  • Необходимо доработать сайт http://soft-show.com/ : 1. Увеличить размер фотографии товара в каталоге товаров (http://soft-show.com/catalog/office/ ) и написать где это задается, чтобы мы могли сами управлять размером фотографий 2. Добавить Тип цен ( Розничная ). ...

    Закрыт
    12 лет назад
  • Есть пример приложения с авторизацией на фреймворке Kohana через социальные сети https://github.com/biakaveron/sso-demo Необходимо добавить к текущему функционалу авторизацию/регистрацию через смс (сервис sms.ru). Нужен не "костыль", а именно интеграция в имеющийся функционал. ...

    Закрыт
    12 лет назад
  • $100

    Есть игровой сайт, движек написан на php с использованием фреймворка YII. Необходимо его немного доработать: - добавить интеркассу - сделать поддержку 3х баз (регистрация, отображение статистики) (в сайте есть возможность работы с 3 ...

    Закрыт
    12 лет назад
  • $100

    Взять самый распространенный форумный движек (php). Доработать его так что бы при регистрации игрока можно было из сосденей базы подтянуть игровой персонаж и пихнуть его под аватарку в форуме. Пример ...

    Закрыт
    12 лет назад
  • $1800

    Нужен опытный бэк-энд разработчик для работы в команде разрабов. Проект ПО для Американских госпиталей. Русскоязычная команда. Работа на фулл-тайм с ежемесячной оплатой 54000р. Детали будут обсуждены в Skype. ...

    Закрыт
    12 лет назад