Невозможно вставить данные в таблицу postgres из подключения к удаленной базе данных. - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь вставить данные в таблицу postgres из таблицы удаленной базы данных. Я написал следующий запрос для этой цели, но я получаю следующую ошибку.


'[Code: 0, SQL State: 42601]  ERROR: syntax error at or near "table"
  Position: 13  [Script position: 141 - 146]'

create table clintrial_EP_map.lead_sponsors (row_id SERIAL, lead_sponsors character varying)

insert into table clintrial_ep_map (lead_sponsors) 

 (  select 
        *
    from
        dblink('dbname=x user=x host=x password=x port = x', 
    '
    SELECT
        distinct bm_dimt_clinical_trial.lead_sponsor
        FROM
        dwh_prod.bm_dimt_clinical_trial

        where dataset_version_id = xx and lead_sponsor_class = ''xx''

    '              
    ) as ls (
        lead_sponsor character varying
    )
)   
;

Пожалуйста, смотрите, следующий запрос дает мне желаемый результат.

select 
        *
    from
        dblink('dbname=x user=x host=x password=x port = x', 
    '
    SELECT
        distinct bm_dimt_clinical_trial.lead_sponsor
        FROM
        dwh_prod.bm_dimt_clinical_trial

        where dataset_version_id = xx and lead_sponsor_class = ''xx''

    '              
    ) as ls (
        lead_sponsor character varying
    )

    ;


I Я не могу найти синтаксическую ошибку рядом с таблицей в моем запросе вставки. Любые предложения здесь будут действительно полезны.

Спасибо

1 Ответ

0 голосов
/ 12 марта 2020

Ваш запрос имеет две проблемы. Первое: создание таблицы не заканчивается; я надеюсь, что это опечатка и второе: ваш оператор вставки ссылается на имя схемы вместо имени таблицы с указанием схемы. А также использование ключевого слова «таблица» в вставке, что не требуется. Таким образом, ваш правильный запрос будет

create table clintrial_EP_map.lead_sponsors (row_id SERIAL, lead_sponsors character varying);

и

insert into clintrial_EP_map.lead_sponsors (lead_sponsors) 

 (  select * from
        dblink('dbname=x user=x host=x password=x port = x', 
    'SELECT
        distinct bm_dimt_clinical_trial.lead_sponsor
        FROM
        dwh_prod.bm_dimt_clinical_trial

        where dataset_version_id = xx and lead_sponsor_class = ''xx''
    '              
    ) as ls (lead_sponsor character varying)
 );

Раскрытие информации: я работаю на EnterpriseDB (EDB)

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