Привет всем!)) Работаем с двумя бекэндами по API. Загружаем заказы с бекенда1 в таблицу и меняем статусы заказам с по POST запросам с бекенда2 Знания ...
Перевод данных из файла Excel в таблицу MySQL
Здравствуйте!
В исходных данных имеем: таблица 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 не попадает.
Файлы приложил.
Выбранный исполнитель
Похожие заказы
- $250Веб-программирование3 заявкиЗакрыт12 лет назад
- $500
Требуется разработать на основе CMS Drupal сайт мебельной компании... Техническое задание прикреплено... Перед детальным обсуждением проекта жду приблизительные сроки и суммы... С выбранным специалистом в случае удачного окончания проекта возможно длительное сотрудничество.
Веб-программирование7 заявокЗакрыт12 лет назад Нужно сделать php класс для работы с API Google Adwords (последней стабильной версии). Все предоставляемые гуглом методы должны быть отображены на соответствующие методы php. Класс должен представлять из себя сервис Symfony 2.2, пригодный для подключения ...
Веб-программирование2 заявкиЗакрыт12 лет назадСделать экспорт элементов инфоблока в формате CSV. Разделитель знак: ¥ Помимо стандартных значений свойств (название, активность, теги и т.п.) файл экспорта должен содержать: 1. Комментарии пользователей к элементам инфоблока: дата, автор, ...
Веб-программирование3 заявкиЗакрыт12 лет назадНеобходимо доработать сайт http://soft-show.com/ : 1. Увеличить размер фотографии товара в каталоге товаров (http://soft-show.com/catalog/office/ ) и написать где это задается, чтобы мы могли сами управлять размером фотографий 2. Добавить Тип цен ( Розничная ). ...
Веб-программирование2 заявкиЗакрыт12 лет назадЕсть пример приложения с авторизацией на фреймворке Kohana через социальные сети https://github.com/biakaveron/sso-demo Необходимо добавить к текущему функционалу авторизацию/регистрацию через смс (сервис sms.ru). Нужен не "костыль", а именно интеграция в имеющийся функционал. ...
Веб-программирование2 заявкиЗакрыт12 лет назад- $100
Есть игровой сайт, движек написан на php с использованием фреймворка YII. Необходимо его немного доработать: - добавить интеркассу - сделать поддержку 3х баз (регистрация, отображение статистики) (в сайте есть возможность работы с 3 ...
Веб-программирование2 заявкиЗакрыт12 лет назад - $100
Взять самый распространенный форумный движек (php). Доработать его так что бы при регистрации игрока можно было из сосденей базы подтянуть игровой персонаж и пихнуть его под аватарку в форуме. Пример ...
Веб-программированиенет заявокЗакрыт12 лет назад Необходимо сверстать и оформить посадочную страницу, настроить форму подписки Get Response, также есть работа по внесению правок в существующие страницы на Wordpress.
Веб-программирование1 заявкаЗакрыт12 лет назад- $1800
Нужен опытный бэк-энд разработчик для работы в команде разрабов. Проект ПО для Американских госпиталей. Русскоязычная команда. Работа на фулл-тайм с ежемесячной оплатой 54000р. Детали будут обсуждены в Skype. ...
Веб-программирование3 заявкиЗакрыт12 лет назад