Запуск в константу ограничения размера строки в операторах вставки с Oracle - PullRequest
2 голосов
/ 14 января 2012

Я пытаюсь скопировать строку из нашей производственной БД в свою собственную маленькую персональную БД Oracle Express, чтобы воспроизвести ошибку, так как я не могу действительно войти в код на производстве. К сожалению, эта строка включает столбец, который сериализует какую-то структуру данных в тип столбца blob, смеясь перед богами нормализации. Вот это INSERT:

INSERT INTO TPM_VIEWS VALUES(
5,
'Test Repro View',
665,
1,
'0001000000ffffffff01000000000000000c020000003a44414c2c205... //About 7600 characters
);

Я попытался запустить это в Aqua Data Studio 10 и получаю:

ORA-01704: string literal too long

Затем я попытался вставить его в SQL * Plus, который дает мне:

SP2-0027: Input is too long (> 2499 characters) - line ignored

Наконец, я попытался вставить все это в foo.sql и запустил @foo.sql, что дает мне:

SQL> @c:\foo.sql
Input truncated to 7499 characters
SP2-0027: Input is too long (> 2499 characters) - line ignored
ERROR:
ORA-01756: quoted string not properly terminated

Какой суперсекретный способ эксперта Oracle сделать это? И нет, у меня нет доступа к самому серверу Oracle, поэтому я не могу запустить утилиты резервного копирования или экспорта из командной строки. Спасибо!

UPDATE:

Я также попытался разделить строку, разбросав несколько ' || ' вокруг случайно, что дает мне ошибку:

 ORA-01489: result of string concatenation is too long

1 Ответ

4 голосов
/ 14 января 2012

Поскольку вы можете получить доступ к производственной базе данных, возможно, самое простое решение - создать ссылку на базу данных из вашей локальной базы данных XE на производственную базу данных.

CREATE DATABASE LINK link_to_prod
  CONNECT TO <<your user name in prod>> 
  IDENTIFIED BY <<your password in prod>>
  USING <<TNS alias for prod database>>

Затем вы можете скопировать данные из prod вваша локальная база данных

INSERT INTO tpm_views
  SELECT <<list of columns including BLOB>>
    FROM tpm_views@link_to_prod
   WHERE <<some key>> = 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...