Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Алгоритм уникальности строки  [new]
philips
Member

Откуда:
Сообщений: 365
Есть база dbf (100000 записей - перемещения работников. столбцов 50 ). Надо каждый день заливать на MSSQl. Данные могут обновляться в любой записи (не знаю в какой). Тип столбцов разный.
Структуры dbf и Sql - принципиально различны.Первичного ключа нет (записи могут удаляться). Надо найти записи которые добавлены (обновлены) с последней закачки. В программе на Foxe ничего не менять - писалась еще под AT286. Может у кого есть алгоритм определяюший уникальную контрольную сумму уже имеющейся строки. Checksum не помогает много дубликатов . Есть HaspByte - но это надо сумму 90 столбцов перевести .
в строку. Удалить все и вставит заново - есть ссылки на первичный ключ таблицы.
18 фев 12, 14:16    [12115238]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм уникальности строки  [new]
iljy
Member

Откуда:
Сообщений: 8711
philips,

если нет первичного ключа - то как вы определяете, какую запись обновить?
18 фев 12, 14:26    [12115263]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм уникальности строки  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
Я в своем время для такой задачи именно HashBytes и использовал. Посчитать строчку от 90 полей - не вам же в уме это считать, а серверу. Он справится.
18 фев 12, 14:43    [12115322]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм уникальности строки  [new]
philips
Member

Откуда:
Сообщений: 365
Сон Веры Павловны
Я в своем время для такой задачи именно HashBytes и использовал. Посчитать строчку от 90 полей - не вам же в уме это считать, а серверу. Он справится.

А алгоритм перебора столбцов какой-нибудь есть или надо явно все указывать?
18 фев 12, 14:56    [12115373]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм уникальности строки  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
philips
А алгоритм перебора столбцов какой-нибудь есть или надо явно все указывать?

Разумеется, надо. Лень хардкодить имена столбцов - возьмите их из information_schema.columns, и посчитайте в динамическом sql.
18 фев 12, 15:05    [12115403]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм уникальности строки  [new]
Юрий Ивченко
Member

Откуда:
Сообщений: 32
philips,

для синхронизации данных используют EXCEPT и INTERSECT (Transact-SQL) или MERGE (Transact-SQL).
Процессы синхронизации данных легко автоматизировать с помощью SSIS.

Неразрешенные конфликты синхронизации должны обрабатываться специалистом, например сотрудником отдела HR.
18 фев 12, 19:02    [12116161]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм уникальности строки  [new]
sti
Member

Откуда:
Сообщений: 769
Если у вас нет никакого способа определить ключ, то как вы будете решать такую ситуацию:

до
Иванов Иван Иванович   директор
Иванов Иван Иванович дворник

после
Иванов Иван Иванович   дворник
Иванов Иван Иванович директор

Осталось ли все по прежнему или эти двое должностями поменялись?
18 фев 12, 20:39    [12116471]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм уникальности строки  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1317
philips,
на самом деле новые записи легко отловить из фокса
через reccount() (сняв последние по таблицам в момент импорита )

а вот апдейченные - если там в таблицах есть что-то типа dat_upd то легко а если нет то никак
удаленные в дбф обычно не удаляются фиизчески а помечаются битом
(ну если там не додумались вставить pack автоматом)

а вообщем 50 стоблцов это подозрительно - бывает да что сущность имеет много атрибутов но думаю это не тот случай
вообще надо определятсья с алгоритмом и
и искать альтернативный ПК в дбф
или же грузить все скопом - 100 000 записей это не проблема ни для фокса ни для скл-сервера
проще всего наверно будет через VFP -> текст. файл--> BCP
20 фев 12, 16:07    [12123979]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить