Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2013, 00:09   #1
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию SQLite: как избежать дублирования записей

Доброй ночи! Опять у меня затык. Импортирую из TXT в SQLite данные. Первый раз импортируются все записи, но со временем некоторые записи могут изменится, соответственно такие записи будут вновь импортированы из TXT. Важно, что импортируются конкретно те записи, в которых произошли изменения с момента первоначальной загрузки, а не вся таблица целиком. Сейчас эти "измененные" записи добавляются в конец таблицы, и соответственно дублируются в некоторых полях. Например.
Было сначала:
Job;Ivan Petrov;12345;
Стало:
Job;Ivan Petrov;12222;
А в таблице будет уже 2 Ivan Petrov.
Job;Ivan Petrov;12345;
Job;Ivan Petrov;12222;
А нужно чтобы запись с последними изменениями заменила собой устаревшую запись. Это по идее нужно делать в менджере БД SQLITE. Но у меня пока не получилось. Я пользуюсь SQLite Expert Personal. Primary Key и вообще индексов нет. Подскажите как настроить базу?
Kerby666 вне форума Ответить с цитированием
Старый 10.08.2013, 09:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А откуда записи попадают в ТХТ файл?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2013, 11:02   #3
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А откуда записи попадают в ТХТ файл?
Файл формирует 1С.
Kerby666 вне форума Ответить с цитированием
Старый 10.08.2013, 16:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

О! Так наверное лучше если бы сам экспорт в 1С подключался к базе и писал в нее?
Или у тебя к конфе нет доступа чтоб ее допилить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2013, 16:20   #5
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
О! Так наверное лучше если бы сам экспорт в 1С подключался к базе и писал в нее?
Или у тебя к конфе нет доступа чтоб ее допилить?
Конфу 1с трогать нельзя. Но вариант интересный.
Kerby666 вне форума Ответить с цитированием
Старый 10.08.2013, 16:43   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Коль вопрос в разделе дельфи, то почему нельзя програмно это сделать? Если уж ключей нет, то нужно как-то определиться - какие поля считать условно-ключевыми, например фамилия и если таковая найдена в базе, то обновить эту запись, иначе создать новую. По другому навряд-ли и никакой менеджер не поможет, если в него не заложены подобные возможности
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.08.2013, 16:55   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нужно как-то определиться - какие поля считать условно-ключевыми, например фамилия и если таковая найдена в базе
Ухуху... Представляю тормоза при полном проходе на импорте каждой записи
Цитата:
Конфу 1с трогать нельзя.
Это печально.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2013, 16:59   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Представляю тормоза при полном проходе на импорте каждой записи
Неизбежно ТС, создавай ключи и индексы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.08.2013, 17:20   #9
Kerby666
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Коль вопрос в разделе дельфи, то почему нельзя програмно это сделать? Если уж ключей нет, то нужно как-то определиться - какие поля считать условно-ключевыми, например фамилия и если таковая найдена в базе, то обновить эту запись, иначе создать новую. По другому навряд-ли и никакой менеджер не поможет, если в него не заложены подобные возможности
Есть поле KOD, которое можно считать уникальным, точно не повторится. Можно пример программного сравнения записей перед импортом? Скорость проверить хочу. Еще я думаю, что в качестве крайнего варианта, можно импортировать таблицу полностью, но надо тогда как-то удалять старую перед импортом, создавать новую с такими же полями и ее уже заполнять. Тоже, если можно примерчик , как быстро удалить и создать таблицу?

Еще запрос как-то криво работает.
Код:
DataModule4.LiteQuery1.Active:=FALSE;
DataModule4.LiteQuery1.SQL.Clear;
DataModule4.LiteQuery1.SQL.Text:='select * from Table where KOD='+Edit1.Text;
DataModule4.LiteQuery1.Active:=True;
DBText1.DataField:='NAME';
Один раз отрабатывает и всё! То есть ввожу код в Edit, он мне Name выводит. Ввожу другое значение, жму на кнопку - реакции ноль! Где косяк может быть? Простите за наглость, но еще как обработать исключения если Edit пустой и если такой код не найден в таблице?

Последний раз редактировалось Stilet; 10.08.2013 в 19:29.
Kerby666 вне форума Ответить с цитированием
Старый 10.08.2013, 19:31   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Есть поле KOD, которое можно считать уникальным, точно не повторится.
Так можно считать уникальным или всетки оно сделано как уникальное ключевое и проиндексированно?
О! Еще один вопрос: А зачем удалять дубликаты? Я так понимаю данная таблица не является справочником, а скорее логом. Так может быть дубликаты удалять там не нужно никак?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как избежать циклической формулы? KJ_ya Microsoft Office Excel 4 27.01.2013 22:22
Как избежать излишнего использования :: invector Помощь студентам 2 28.09.2011 14:54
как избежать подвисания Juffin Общие вопросы Delphi 12 18.05.2011 23:41
Как избежать Selection? Мультипликатор Microsoft Office Word 10 21.06.2010 17:15
как избежать кэширования в Опере rolling PHP 3 01.12.2009 18:34