чтение одной базы данных Oracle для записи в другую базу данных Oracle - PullRequest
1 голос
/ 19 февраля 2010

c # код: у меня есть 2 базы данных Oracle, одна из которых удаленная, я выбираю значения из своих таблиц в своей локальной базе данных Oracle: запрос возвращает 8 столбцов: я хочу записать данные в удаленную таблицу Oracle с разными именами столбцов иАтрибуты: я также хочу убедиться, что вставляются только новые значения строк: структура таблицы моей удаленной базы данных отличается от столбцов, возвращаемых моим запросом выбора.

мой оператор выбора из другого запроса таблицы возвращает следующее: столбцы: customer_name, customer_id, customer_dep_number, mobile_number, payment_amount, vehicle_model, collection_point ,action_date

структура удаленной таблицы выглядит следующим образом: TABLE vehicle_bought

BUYER_ID NUMBER NOT NULL,

BUYER_NAME VARCHAR2 (100 байт) NOT NULL,

BUYER_NAT_ID VARCHAR2 (25 байт) DEFAULT 'N / A' NOT NULL,

BUYER_VEHICLE_DESCRIPTION VARCHAR2 2 BYN 2 (2000 BYN)*

BUYER_STATUS VARCHAR2 (1 байт) DEFAULT 'U' NOT NULL,

VEHICLE_AMOUNT НОМЕР НЕ НУЛЬ,

CREATED_BY NUMBER,

TRANS_CREATION_DATE DATE,

LAST_UPDATED_BY NUMBER,

* DATE * LAST*

RECEIPT_CREATED VARCHAR2 (1 байт) DEFAULT 'N',

MOBILE_NUM VARCHAR2 (50 байт),

VEHICLE_COLLECTION_POINT VARCHAR2 (100 байт), * RAR2

1032

10321 БАЙТ) ПО УМОЛЧАНИЮ 'N',

)

поля, которые я хочу прочитать и вставить, следующие: customer_name = BUYER_NAME, customer_id = BUYER_ID

customer_dep_number = BUYER_NAT_ID

mobile_number = MOBILE_NUM

payment_amount = VEHICLE_AMOUNT

vehicle_model = BUYER_VEHICLE_DESCRIPTION

collection_point = VEHICLE_COLLECTION_CY_TATE_50 * * * * * * ** очень актуальный язык c # пожалуйста: сувенир обещали, кто бы ни помог.

1 Ответ

1 голос
/ 19 февраля 2010

Быстрое и грязное решение:

  1. Создать ссылку на базу данных в удаленной базе данных (место назначения), которая подключается к локальной базе данных (источник)
  2. Запустите вставку по ссылке на базу данных из удаленной базы данных, т.е.

    INSERT INTO desttable (customer_name,
                           customer_id,
                           customer_dep_number,
                           mobile_number, ...)
    SELECT s.buyer_name,
           s.buyer_id,
           s.buyer_nat_id,
           s.mobile_num,
           ...
    FROM   sourcetable@dblink s
    WHERE NOT EXISTS (
       SELECT null FROM desttable
       WHERE desttable.buyer_id = s.buyer_id
    );
    

Альтернатива: лучшее решение может использовать вместо этого MERGE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...