powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Dataset из одного источника в другой - как сделать?
20 сообщений из 20, страница 1 из 1
Dataset из одного источника в другой - как сделать?
    #32934048
SQLRоokiе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дано: есть адаптер на один сервер. Он связан с датасетом. В датасет успешно запихиваются данные.

Надо: сконфигурить адаптер на другой сервер. Связать этот второй адаптер с существующим датасетом и залить целиком все данные в таблицу на втором сервере.

Путь решения (отстойный): выбрать первую строку в готовом датасете. Распарсить ее, склеить SQL команду, передать на выполнение. Повторить N раз.


Путь мне не нравится - куча действий для собственно говоря пустого копирования таблицы. Как сделать по-человечески?
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934082
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что мешает сделать такую схему?
1) Создаете адаптер1, настроенный на 1-ю базу. Заполняете датасет. adapter1.Fill(ds);
2) Помечаете все строки в датасете как добавленные
3) СОздаете адаптер2, настроенный на 2-ю базу. Апдейтите этим адптером подготовленный датасет. adapter2.Update(ds);
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934103
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать по-человечески?


ИМХО по человечески не делать этого в ADO.NET :-)

...
Создаете адаптер1, настроенный на 1-ю базу. Заполняете датасет. adapter1.Fill(ds....

DataSet так то прожорлив.

Какой объем данных находиться в таблицах?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934118
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa[quot ]
Как сделать по-человечески?


ИМХО по человечески не делать этого в ADO.NET :-)



Это точно.
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934149
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-хорошему, я бы конечно это сделал через DTS. Если конечно СУБД не слишком экзотические.
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934160
SQLRоokiе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Bigheadman

авторА что мешает сделать такую схему?

Отсутствие опыта

автор2) Помечаете все строки в датасете как добавленные
3) СОздаете адаптер2, настроенный на 2-ю базу. Апдейтите этим адптером подготовленный датасет. adapter2.Update(ds);

Это как?

Вот у меня скажем есть такое:

Код: plaintext
1.
2.
3.
4.
5.
string ifxSQLComm = @"select * from ... where field > 255"; 
ifxConn.Open()

OdbcDataAdapter ifxDA;
ifxDA = new OdbcDataAdapter(ifxSQLComm,ifxConn);
ifxDA.Fill(ifxDS);

Вот теперь то что лежит в ifxDS надо запихать в таблицу на MSSQL.

Код: plaintext
1.
2.
3.
4.
5.
sqlConn.Open();

insComm = "insert ??? "
SqlDataAdapter sqlDA;
sqlDA = new SqlDataAdapter(sqlSQLComm,sqlConn);
sqlDA.Fill(sqlDS); ???

Как правильно-то сделать?



2 Sa

авторDataSet так то прожорлив.

Наплевать. Не те объемы.

авторКакой объем данных находиться в таблицах?

За раз - не больше 20 тыс. строк. Таблица - 7 колонок.


2 hDrummer

авторИМХО по человечески не делать этого в ADO.NET :-)

Угу. Только как данные с одного сервера на другой перепихать (с Информикса на MSSQL), если linked server не добавляется, а датасет открыть можно?
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934174
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какой криминал ?
ведь работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
DataSet	         ds=new DataSet();
OleDbConnection  cn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\db1.mdb;");
OleDbDataAdapter ad=new OleDbDataAdapter("SELECT * FROM TBL2", cn);
			
ad.AcceptChangesDuringFill=false;

OleDbCommandBuilder cb=new OleDbCommandBuilder(ad);
ad.Fill(ds, "T1");
			
ad.InsertCommand=cb.GetInsertCommand();
ad.InsertCommand.Connection=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\db1a.mdb;");
ad.Update(ds, "T1");
ограничение: имя таблицы и названия (и атрибуты) полей должны совпадать в обоих базах
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934214
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какой криминал ?

А кто ж знал для каких объемов будет заполняться DataSet :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934227
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИМХО по человечески не делать этого в ADO.NET :-)

Угу. Только как данные с одного сервера на другой перепихать (с Информикса на MSSQL), если linked server не добавляется, а датасет открыть можно?

А если б .Net не было, как бы вы поступили? Можно через csv перелить например, или как тут говорили - через DTS.

Хотя, конечно, дело ваше. Только DataSet для этих дел не затачивался.
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934248
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hDrummerТолько DataSet для этих дел не затачивался.
насчет скорости копирования - это будет полный ПЭ.
:)
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934251
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLRоokiеУгу. Только как данные с одного сервера на другой перепихать (с Информикса на MSSQL), если linked server не добавляется, а датасет открыть можно? Я когда-то импортировал данные из Informix в MSSQL 2000 с помощью DTS. Проблем не было никаких, за исключением нескольких специфических. Даты меньше 1 января 1753 года и кажется BLOB поля
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934346
SQLRоokiе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 кузя

авторнасчет скорости копирования - это будет полный ПЭ.

Меньше 1 секунды при парсинге строк. Меня такая скрость вполне устраивает.


2 hDrummer

авторА если б .Net не было, как бы вы поступили?

Copy/Paste из Гуевых таблиц - и все в Ексель. А там VLOOP на дофига строк. Собственно говоря так оно до сих пор и делается. И меня жутко бесит.


2 Alexey Kudinov

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

Насчет проблем с информиксом - а если данные не в таблицах лежат а их ХП генерит динамически? ХП параметры передавать надо. А если запускаться должно по определенному событию? А если ДТС не знаешь? ;о)
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934360
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ по-моему вполне конкретный вопрос задал - как имея датасет в одном источнике, запихать данные из него в другой?


Что вас не устраивает/вам не понятно в предложенной мною схеме? Делать Fill и Update разными адаптерами вполне допустимо. Точнее так - если нигде не написано, что нельзя, значит можно.
Вы привели некую заготовку кода. Что у вас не получается в ней?
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934369
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF:

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

Поверьте, если бы всегда приходилось отвечать только на конкретно поставленные вопросы, форума бы и не было.
Alexey Kudinov вам сказал о реальном использовании DTS в похожей ситуации, я бы на вашем месте был бы ему благодарен.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934377
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bigheadman что с тобой сегодня. Это было адресовано ни тебе :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934409
SQLRоokiе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Bigheadman

авторЧто вас не устраивает/вам не понятно в предложенной мною схеме?

Если честно - ничего не понятно. Вернее так:

1. Что должно быть записано в качестве команды insComm, на основнии которой потом будет создаваться адаптер? Все равно что?

2. Допустим я создал второй адаптер (sqlDA). Если я делаю sqlDA.Update(sqlDS) что у меня в табличке в базе появится?

3. Как пометить строки для апдейта?
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934443
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLRоokiеНасчет проблем с информиксом - а если данные не в таблицах лежат а их ХП генерит динамически? ХП параметры передавать надо. А если запускаться должно по определенному событию? Это все решаемо, подробности в ГФ SQLRоokiеА если ДТС не знаешь? ;о) ...

Впрочем раз вы решили идти своим путем - идите.

PS: я бы еще понял, если бы сервера в принципе нельзя было связать по причинам безопасности, удаленности или еще каким. Или если бы данные нужно было как-то обработать или преобразовать сложным образом, но для " собственно говоря пустого копирования таблицы " изобретать свой DTS ?
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934449
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторBigheadman что с тобой сегодня. Это было адресовано ни тебе :-)
А что со мной? :-) Я что-то не то ответил в этом топике? Серьезно.

авторЧто должно быть записано в качестве команды insComm, на основнии которой потом будет создаваться адаптер? Все равно что?

Адаптер создается только на основе SelectCommand, но никак не INsertCommand. Вы можете создать "пустой" адаптер new SqlDataAdapter() и назначить ему созданную вручную InsertCommand. Какой запрос эта команда будет содержать, зависит от вашего источника данных. Кроме вас никто здесь о нем ничего не знает.

авторДопустим я создал второй адаптер (sqlDA). Если я делаю sqlDA.Update(sqlDS) что у меня в табличке в базе появится?

Если все правильно настроено, то появятся данные из датасета.

авторКак пометить строки для апдейта?
У строк должно быть RowState == DataRowState.Added. Для этого можно создать новый датасет с такой же структурой, что и исходный. ds.Clone(). И залить в новый датасет все строки вручную (в цикле). В итоге в новом датасете все строки будут Added.
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934476
SQLRоokiе
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Bigheadman

ОК, спасибо. В понедельник проэкспериментирую.


2 Alexey Kudinov

Мне надо по-быстрому перепнуть две таблички (точнее результат запросов) с одного сервера на другой, дописав в столбец еще по одному идентификатору. Может быть DTS использовать и правильно, но с ним надо еще разбираться. Прогу я наваяю за день, а с DTS - понятия не имею сколько придется провозиться.
...
Рейтинг: 0 / 0
Dataset из одного источника в другой - как сделать?
    #32934598
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF:

А что со мной? :-) Я что-то не то ответил в этом топике? Серьезно.

Да я не про ответ, ты принял на свой счет сообщение, которое адресовалось
Alexey Kudinov :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Dataset из одного источника в другой - как сделать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]