CftClub.ru
Клуб специалистов ЦФТ-Банк

Загрузчик из IBSO (C#)

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Интеграция с внешними подсистемами
Предыдущая тема :: Следующая тема  
Автор Сообщение
Viton-Zizu
Участник


Вступление в Клуб: 10.12.2015
СообщениеЧт Дек 10, 2015 07:20   Загрузчик из IBSO (C#) Ответить с цитатой
Полезность: Нет оценки
Ребят, есть такая задача, выгружать определенное представление периодически в свою базу. Решил сделать загрузчик на C# для этой задачи, создаю коннект:
Код:
string oradb = "Data Source=ORCL;User Id=hr;Password=hr;";
OracleConnection conn = new OracleConnection(oradb);  // C#
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from IBS.VW_DEBT_CRED";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();

Но в итоге в ридер попадает таблица без записей, я так понимаю нужно добавить executor.lock_open ? Но как? просто в текст этого же запроса? в oracle не силен.
Может есть варианты решить эту задачу с помощью pl\sql developer?

Доступ к базе очень ограниченный, т.е. могу просматривать только представления. Доступа к таблицам нет.
Попутный вопрос, как можно связывать два представления, для более быстрой выгрузки? Если делаю просто путем вложенного запроса то может жутко долго грузиться!
KhrushchevAV
Участник со стажем


Вступление в Клуб: 17.10.2014
СообщениеЧт Дек 10, 2015 08:03    Ответить с цитатой
Полезность: Нет оценки
Обычно "select * from SOME_VIEW" работает без executor.lock_open. (Если в представлении не использованы мудреные вызовы).
Я бы сначала посмотрел, что вернет этот же селект, под этим же пользователем из sqlplus или sqldeveloper. И по результатам уже думал куда копать. Может в C# в направлении рекордсет, а может не положено Вам видеть...
Viton-Zizu
Участник


Вступление в Клуб: 10.12.2015
СообщениеЧт Дек 10, 2015 09:17    Ответить с цитатой
Полезность: Нет оценки
ну вот элементарную таблицу all_views, sql developer видит, а в C# получаю пустой вариант.
KhrushchevAV
Участник со стажем


Вступление в Клуб: 17.10.2014
СообщениеЧт Дек 10, 2015 09:33    Ответить с цитатой
Полезность: Нет оценки
И это означает... Что
Код:
executor.lock_open
тут не причем. sqldeveloper его не запускает. Тут Вам надо копать в C#. Как там работать правильно с OracleDataReader...

Что у Вас дальше по коду, мне не видно. Что-то типа:
Код:
try
        {
            while (dr.Read())
            {
                Console.WriteLine(dr.GetValue(0));
            }
        }
        finally
        {
            dr.Close();
        }

?
Viton-Zizu
Участник


Вступление в Клуб: 10.12.2015
СообщениеЧт Дек 10, 2015 10:08    Ответить с цитатой
Полезность: Нет оценки
и вправду, я просто не довел дело до логического конца))
Спасибо!!!

А по работе вьюх сразу не подскажите? как правильней в оракле делать связку двух представлений?
KhrushchevAV
Участник со стажем


Вступление в Клуб: 17.10.2014
СообщениеЧт Дек 10, 2015 12:21    Ответить с цитатой
Полезность: Нет оценки
Цитата:
А по работе вьюх сразу не подскажите? как правильней в оракле делать связку двух представлений?


Мне вопрос не понятен.
- Как "делать связку двух представлений"?
- Так же как и двух таблиц.

Код:
SELECT * FORM V1, V2 WHERE V1.PK=V2.FK;


В чем, конкретно, проблема?

Если написать, например (опять я гадаю), только:
Код:
SELECT * FORM V1, V2

То получим, что на каждую строку v1 будут выбраны ВСЕ строки v2, на вторую строку опять ВСЕ... и т.д. (Гуглить "картезианское произведение") Не надо так делать.
Поля по которым связывать таблицы (или представления), надо выбирать правильно. В идеале, это должны быть "первичный ключ" и "внешний ключ". И тут Вам не обойтись без некоторого понимания структуры данных...
Viton-Zizu
Участник


Вступление в Клуб: 10.12.2015
СообщениеПт Дек 11, 2015 09:11    Ответить с цитатой
Полезность: Нет оценки
Спасибо большое за ответы!
Просто делаю запрос также как вы расписали, они у меня довольно долго выполняются, думал может примудрость какая есть)
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Интеграция с внешними подсистемами Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru