четверг, 20 ноября 2014 г.

Как обойти ошибку SP2-0027 при запуске скрипта в SQL*Plus

Я экспортирую таблицу с данными в формате insert из Oracle SQL Developer, получаю скрипт export.sql. На другом сервере баз данных, который доступен только локально, выполняю этот скрипт из под SQL*Plus: SQL>@/data/script.sql. Все команды insert в скрипте записаны отдельными строками. Некоторые строки очень длинные. В таких случаях при выполнении возникает ошибка: SP2-0027: Input is too long (> 2499 characters) – line ignored. Это ограничение SQLPlus: он не может прочитать больше 2500 символов в строке. В командах insert вставляются полигоны с большим количеством точек, используется тип MDSYS.SDO_ORDINATE_ARRAY с перечислением координат, разделённых запятыми.
Моя задача состояла в том, чтобы вставить переносы строк после последней запятой до колонки 2500. Строк может быть очень много, вручную это делать утомительно.
Для решения я использую Notepad++. После открытия файла выполняю команду "Замена" (Ctrl+H), выбираю режим поиска "Регуляр. выражен." и "Зациклить поиск", в поле "Найти" ввожу (^.{2470,2490}\d,) (найти фрагменты строк длиной от 2470 до 2490 символов, за которыми следует цифра и запятая), в поле "Заменить на" ввожу "\1\r\n" (добавить к найденному фрагменту символы <CR><LF>, как принято в Windows) или "\1\n", если требуется UNIX-формат. Выполняю "Заменить всё" и переносы строк вставляются в нужных местах!

Комментариев нет:

Отправить комментарий