Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Импорт из csv в базу   Найти похожие ветки 

 
Yurij-7   (2005-11-07 12:25) [0]

Уважаемые Мастера, прошу помочь разобраться в сложившейся ситуации:
есть файл CSV который сначала загоняю в СтрингГрид а потом хочу импортить, перед импортом надо проверять существует ли запись с таким же идентификатором в базе, если да то отказаться от импорта, если нет то добавить запись.
Подскажите каким образом будет правильный импорт, как вариант я могу использовать исключительные ситуации (поле идентификатора будет индексным), но всеже хотелось это сделать через SQL, получаеться сначала надо делать селект с базы чтобы проверить чуществует ли запись а потом если результат пустой то добавить новую, или есть решение более правильное и проще?
Спасибо.


 
Val ©   (2005-11-07 13:09) [1]

1.создать первичный ключ в таблице, куда качаете.
2.обрабатывать ошибку нарушения первичного ключа при вставке.


 
Yurij-7   (2005-11-07 13:17) [2]

ну я это описал для доступа через TTable (это для меня не самый лучший вариант) я хочу это все через SQL +TQuery  делать.


 
Sergey13 ©   (2005-11-07 13:29) [3]

> получаеться сначала надо делать селект с базы чтобы проверить чуществует ли запись
Зачем это для отлова ИС?


 
Val ©   (2005-11-07 13:36) [4]

>[2] Yurij-7   (07.11.05 13:17)
можно воспользоваться загрузкой всех id на клиента в список, при вставке - искать.


 
Yurij-7   (2005-11-07 13:43) [5]

ну импорт я вижу так, беру значение идентификатора с стринг грида, потом по этому значению делаю селект из базы, если Кверик ничего не вернул то делаю инсер а если что то вернул то получаеться запись в базе уже есть.


 
Val ©   (2005-11-07 13:46) [6]

если вы делаете построчную вставку, то см.1. никакой разницы через квери или тейбл - пункты справедливы для обоих случаев.


 
Sergey13 ©   (2005-11-07 13:47) [7]

2[5] Yurij-7   (07.11.05 13:43)
Непонятно зачем тебе стринггрид, но это дело твое.
А почему не так - инсертишь новую запись, если возникает ИС - откатываешь и продолжаешь со следующей.


 
Yurij-7   (2005-11-07 13:56) [8]


> если вы делаете построчную вставку, то см.1. никакой разницы
> через квери или тейбл - пункты справедливы для обоих случаев.
>


я так понял через блок try ... except ?


> 2[5] Yurij-7   (07.11.05 13:43)
> Непонятно зачем тебе стринггрид, но это дело твое.

ну сначала все гружу в СтрингГрид, там автозаменяються значения, коректируються и идут в базу ...


 
Val ©   (2005-11-07 14:26) [9]

>[8] Yurij-7   (07.11.05 13:56)
> я так понял через блок try ... except ?

конечно.

> ну сначала все гружу в СтрингГрид

зачем вам визуализировать их? почему не грузить в любой доступный датасет в памяти, например ClientDataSet?


 
ANB ©   (2005-11-07 14:30) [10]


> Yurij-7   (07.11.05 13:56) [8]

А я бы сделал так, как ты сам и предложил : т.е. через предварительный запрос. Напрягать систему исключений для сего, по моему, некузяво. А скорости не прибавится. Плюс исключение может произойти по любой другой причине и придется обрабатывать коды. А они у разных СУБД могут отличаться. Только не забудь повесить уникальный индекс.


 
Yurij-7   (2005-11-07 15:22) [11]


> зачем вам визуализировать их? почему не грузить в любой
> доступный датасет в памяти, например ClientDataSet?

чесно сказать с подобным способом нестыкался - почитаю, узнаю как.

Спасибо огромное, информации получил достаточно, буду разбираться.



Страницы: 1 вся ветка

Текущий архив: 2005.12.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
5-1117634429
Суслик
2005-06-01 18:00
2005.12.25
Комбинирование runtime пакетов и НЕruntime пакетов.


4-1130327381
Хинт
2005-10-26 15:49
2005.12.25
Hook на нажатие клавиш


2-1132781189
Officeman
2005-11-24 00:26
2005.12.25
Срочно! нужен "ImageList" с поддержкой *.gif


14-1133455747
LordOfRock
2005-12-01 19:49
2005.12.25
Знайте, что вы смотрите американский фильм, если:


6-1127139449
Hamsterman
2005-09-19 18:17
2005.12.25
Возможно ли в Delphi программным путём посылать HTML forms?