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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2017, 14:29   #1
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию bulkCopy MsSQL

Ув. профессионалы требуется ваша помощь в решении задачи. Есть TclientDataSet из которого нужно массово вставить данные в таблицы БД под управлением MsSQl сервера. Как это вообще организовывается в Delphi? С помощью адаптера или есть другие методы. Средствами самого SQL делается все просто:
insert into TableA (CODE,NAME) values(
(select TableB.Code,TableB.Name from TableB ))
Как из Delphi передать TableB ?
P/S Заранее спасибо
Пишу много и развернуто
Heneken87 вне форума Ответить с цитированием
Старый 11.07.2017, 15:02   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

сделать из clientdataset что-то что сможет понять MS SQL
например xml http://www.programmersforum.ru/showthread.php?t=267440
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 11.07.2017, 15:45   #3
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
сделать из clientdataset что-то что сможет понять MS SQL
например xml http://www.programmersforum.ru/showthread.php?t=267440
Спасибо за пример. Но этот метод подразумевает вставку из файла находящегося на сервере.
P/S^ У меня файлик как раз XML. Хочется пример передачи массива данных от клиента на сервер.
По сути insert into TableA (N1,N2,N3) values (1,2,3) это вставка одномерного массива , неужели нет возможности вставки матрицы
Пишу много и развернуто

Последний раз редактировалось Heneken87; 11.07.2017 в 15:50.
Heneken87 вне форума Ответить с цитированием
Старый 11.07.2017, 16:01   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Heneken87 Посмотреть сообщение
неужели нет возможности вставки матрицы
имхо, нет.
хотите с клиента вставлять - вставляйте в цикле по одной записи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.07.2017, 16:09   #5
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
имхо, нет.
хотите с клиента вставлять - вставляйте в цикле по одной записи.
Иными словами для ускорения процесса вырубаем индексы и не делаем коммит после каждой вставки
Пишу много и развернуто
Heneken87 вне форума Ответить с цитированием
Старый 11.07.2017, 16:33   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Heneken87 Посмотреть сообщение
Иными словами для ускорения процесса вырубаем индексы и не делаем коммит после каждой вставки
точно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.07.2017, 18:52   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

В общем-то можно. Сгенерировать xtr-файл с помощью XML Mapper как Insert Delta, позаботиться при этом что бы имена и типы полей соответствовали таблице, в которую инсертить будем. Открыть нацеленный на эту таблицу пустой клиентдатасет. С помощью XMLTransform загнать в ClientDataSet.XMLData данные из XMLTransform.Data. И ApplyUpdates ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.07.2017, 19:01   #8
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Открыть нацеленный на эту таблицу пустой клиентдатасет.
Созданный в самой БД?
Цитата:
ApplyUpdates
Это смотреть в сторону адаптеров?
P/S Если XML сложной вложенной структуры и я верно понял идею, то нужно будет поизвращаться так же на славу только в самой БД? =)
Пишу много и развернуто

Последний раз редактировалось Heneken87; 11.07.2017 в 19:05.
Heneken87 вне форума Ответить с цитированием
Старый 11.07.2017, 19:05   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
В БД создать?
Табличка в базе должна быть конечно и не обязательно пустая. Просто в клиентдасет выбрать из неё 0 записей по какому-то условию.
Цитата:
ApplyUpdates
Это метод клиентдатасета
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.07.2017, 19:07   #10
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Понял. Большое спасибо.
Пишу много и развернуто
Heneken87 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
insert into MsSql stalsoft Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 07.11.2012 15:38
MSSQL Xe-Xe SQL, базы данных 4 31.10.2011 15:39
Запросы в MSSQL Hookis1 Фриланс 9 17.04.2010 18:08
C# + MSSQL dampirik Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 17.12.2009 01:40
mssql + с# dampirik SQL, базы данных 1 14.12.2009 19:03