Всем привет! Возникла задача обновлять БД sql из MS Access. Каждое утро мне присылают *.sql в котором имеются обновления данных в произвольных полях, коих порядка 50. например Код (Text): INSERT INTO `Karta` () VALUES ('140001', 'Фамилия', 'ИМЯ', 'ОТЧеСТВО', 'ДОЛЖНОСТЬ', 'тра', 'ля', '2013-12-11 00:00:00', 'Травматология', 'Q67.8', '2013-12-25 00:00:00', 'Травматология', 'Q67.8', 14, 1, 'Улучшение', 'КСпН', 'Рядовой', 'еще цифры', 'адрес', 'документ', 'ля', 'цифры', NULL, '1994-08-12 00:00:00', 'Муж', 'родственники', 'г. Тверь ', 'улица ', '2', NULL, '44', 108, '2013-11-02 00:00:00', 0, 0, NULL, NULL, NULL, 'Первый', '08:00', 'Врожденная деформация грудной клетки', 'есть', 'есть', 'не имеет ', 'в плановом порядке', NULL, NULL, 0, 0, 0, 0, 0, 0, NULL, 'Б', 0, 'ПоСрочной', 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0); Собственно вопрос, как производить обновление измененного поля, если они заранее неизвестны? Собственно не чистить же таблицу и обновлять заново, или все же транкейт? База каждый раз присылается полная, а не только изменения. Я в нее, пока, изменений не вношу, только делаю статистику, сколько прибыло/убыло и т.д...
Считываеш все в массив (только то, что нужно изменить) и циклом генерируешь запрос UPDATE используя ключи.. все!)
так сначала узнать надо какие поля поменялись, в том то и проблема Например поменялось поле с названием отделения, скажем была травма, стала неотложка (
обычно в таблице есть первичный ключ, который однозначно идентифицирует запись — в этом его предназначение. возможно ты сумеешь обойтись простым insert…on duplicate key update, чтобы накатывать изменения. эта хитрая ж… штука проверяет существует ли уже запись с нужным ПК и потом либо обновляет данные, либо добавляет.
Попросить экспортировать изменения сразу в SQL-формате не пробовали? Сомневаюсь, что аксесс не умеет.
Fell-x27, так вроде именно в sql и присылают. а тебе прям надо знать что именно обновилось? заменить всё целиком это наверное самый простой и безошибочный алгоритм )))
У акксеса синтаксис идентичен MySQL? А то не приходилось работать с этой радостью. Так-то даже между MySQL и SQLite есть различия в этом плане.
Конечно есть, к сожалению ( Есть, конечно мысль сделать на девеле подключение к access, но это изврат (
накуа? думаю можно подобрать формат выгрузки подходящий для обоих баз - csv или xml. Добавлено спустя 50 секунд: ну или в скрипт засасывать csv, а из него уже инсерты куячить.
что-то у меня подозрение, что не надо делать "обновление" поля, а надо "добавление" новой записи. а то так потеряется история болезни. а при выдаче текущей "карты" оператору показывать последнюю запись.