Как скопировать данные из Netezza DEFINITION_SCHEMA [игнорируя ошибку bytea] - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь проанализировать код, используемый в хранимых процессах на нашем сервере Netezza.

Первый шаг - получить определения / код, содержащиеся в хранимых процессах, - это легко можно сделать любым из следующее:

Использование системных представлений

select
    PROCEDURE,
    PROCEDURESOURCE
from _v_procedure
where
    PROCEDURE = 'MY_PROC'
;

Или использование базовой таблицы [просмотр указывает на эту таблицу]

select
    PRONAME,
    PROSRC as PROCEDURESOURCE
from
    DEFINITION_SCHEMA."_T_PROC" P
where
    PRONAME= 'MY_PROC'

Теперь, когда я запустил некоторый анализ столбец PROCEDURESOURCE и попытаться записать эту информацию в таблицу, я всегда получаю следующую ошибку:

ОШИБКА: тип 'bytea' не поддерживается IBM Netezza SQL

Простой способ воспроизвести эту ошибку - это просто сделать следующее:

create table MY_SCHEMA.TEST_TMP as
with rs as
(
    select
        PRONAME,
        PROSRC
    from
        DEFINITION_SCHEMA."_T_PROC" P
    where
        PRONAME = 'MY_PROC'
)
select * from rs

Я определил, что в DEFINITION_SCHEMA есть столбец. "_ T_PRO C" типа bytea (имя столбца = PROBIN)

Однако я не выбираю этот столбец, поэтому я не уверен, почему я получаю эту ошибку

Может кто-нибудь помочь с обходным путем, как скопировать PROCEDURESOURCE в новую таблицу и обойти ' bytea 'e rror

Спасибо

1 Ответ

0 голосов
/ 22 января 2020

3 предложения: 1) Иногда помогает трюк «ограничить все»: Каковы преимущества использования LIMIT ALL в подзапросе? 2) В качестве альтернативы, сделайте «создать внешнюю таблицу» и поместите свои данные в файл, затем другое утверждение, чтобы прочитать его обратно из файла. 3) последнее предположение, что вы можете явно привести столбец к более мягкому типу данных (Varchar () или подобному)

...