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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2009, 11:39   #1
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию Получить набор в MS SQL из другого провайдера

Всем доброго.
Задача:Нужно подчитывать в базу MS SQL из базы Оракла по некоторому критерию данные, и дописывать те из них дата создания которых (Имеется ввиду что есть поле "дата создания записи") более максимальной в MS SQL базе.

Наработки:
Запрос то я с оракла получаю:
Код:
SELECT   ID,forest,datslz
FROM      OPENDATASOURCE(
         'MSDAORA',
         'Data Source=ora_Serv;User ID=ihbin;Password=qwerty'
         )..ihSpace.Table1
WHERE
 left(workcode,3)='OGK'
AND
 datslz>(select max(datslz) from Myzap)
Это работает, терь задача этот набор через INSERT дописать в мою базу

Но вот не помню как это правильно записать командой.

Myzap - это таблица в которую нужно дописать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2009, 13:18   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ничего сложного
через кверю, которая смотрит на мсскл пиши что-то такое
Код:
query_Myzap.SQL.Text := 'insert into Myzap (ID, forest, datslz) values(:p0, :p1, :p2)';
query_Oracle.First;
while not(query_Oracle.EOF) do 
begin
  query_Myzap.ParamByName(p0).Value := query_Oracle.FieldByName('ID').Value;
  query_Myzap.ParamByName(p1).Value := query_Oracle.FieldByName('forest').Value;
  query_Myzap.ParamByName(p2).Value := query_Oracle.FieldByName('Datslz').Value;
  query_Myzap.ExecSQL;
  query_Oracle.Next;
end;
ну и про коммит не забывай
soleil@mmc вне форума Ответить с цитированием
Старый 26.10.2009, 13:22   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
soleil@mmc
Нуууу....!!!
Я не хочу клинта напрягать.
Хочу чтоб это MS SQL сам сделал.
Так то я смогу, но нафинта мне такое.

Подскажи как мне в INSERT указать мол - взять все поля.
что то типа INSERT INTO (*) values(Что тут писать?)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2009, 13:28   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

все поля так
Код:
insert into Myzap ...
без указания списка полей
но вот список values() все равно нужно указать, либо селект из чего-то

а вроде же есть гетерогенные линки в другие субд и по джобу делать заливку
soleil@mmc вне форума Ответить с цитированием
Старый 26.10.2009, 13:37   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
гетерогенные линки в другие субд
А по русски?
Цитата:
и по джобу делать заливку
вот именно это я и хочу.
Запрос типа этого в шедулер вставить.

Все дошло:
Вот так работает:
Код:
[B]insert into fslzap (ID,forest,datslz)
SELECT   ID,forest,datslz
FROM      OPENDATASOURCE(
         'MSDAORA',
         'Data Source=ora_Serv;User ID=ihbin;Password=qwerty'
         )..ihSpace.Table1
WHERE
 left(workcode,3)='OGK'
AND
 datslz>(select max(datslz) from Myzap)
I'm learning to live...

Последний раз редактировалось Stilet; 26.10.2009 в 14:15.
Stilet вне форума Ответить с цитированием
Старый 26.10.2009, 14:17   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

тогда писать надо так хотя бы
Код:
insert into fslzap 
SELECT
  kzak, oboizd, nomsl, datslz, 
  tabn, ogt, sp, ogmet, okomp, 
  omts, omshm, pdo, buch, sb4, 
  sb6, mex, text, kzaksl
FROM OPENDATASOURCE(
         'MSDAORA',
         'Data Source=orant;User ID=ogk5299;Password=qwerty1234'
         )..OIS_READY.FSLZAP
WHERE 0=0
    and left(workcode,3) = 'OGK'
    and datslz > (select max(datslz) from fslzap)
возможно, придется указать список полей, в которые идет вставка

вот чувак настраивал из оркала в мсскл - ссылко
думаю, что по тому же принципе можно и из мсскл в оракла настроить
soleil@mmc вне форума Ответить с цитированием
Старый 26.10.2009, 14:24   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
возможно, придется указать список полей, в которые идет вставка
Ага уже пошло, спасибо.
Подскажи пож еще одну проблему:
Есть в оракле МЕМО поле (хз. сколько там длина)
Если я в этом запросе его указываю, то он падает на:
Цитата:
Server: Msg 8152, Level 16, State 4, Line 1
String or binary data would be truncated.
The statement has been terminated.

(0 row(s) affected)
Я не против насчет be truncated, но как это ему обьяснить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2009, 14:26   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ага уже пошло, спасибо.
Подскажи пож еще одну проблему:
Есть в оракле МЕМО поле (хз. сколько там длина)
а какой тип мемо-поля?
там может быть varchar2 до 2кб, CLOB, BLOB...

varchar просто можно обрезать так
Код:
substr(field_memo, 1, 255) field_memo

Последний раз редактировалось soleil@mmc; 26.10.2009 в 14:29.
soleil@mmc вне форума Ответить с цитированием
Старый 26.10.2009, 15:17   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
soleil@mmc
О-о-о намек понял.
Спасибо. Думаю глобальная проблема решена. Пойду шедулер настраивать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить дескриптор окна другого приложения и сделать его активным Delphi 7 AndersX Помощь студентам 4 18.10.2009 09:32
Нужно разрулить два провайдера Глеб Стяжников Работа с сетью в Delphi 11 06.04.2009 20:02
Как получить текущую дату из SQL запроса? _ozzy_ SQL, базы данных 2 09.09.2008 21:15
Как получить данные с COM-порта или другого любого порта? DeLure Общие вопросы C/C++ 5 20.09.2007 00:50
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15