четверг, 8 декабря 2016 г.

Oracle: importdp.sh: UDI-00014: invalid value for parameter, 'remap_schema'

После включения опции подкрашивания результатов команды grep
модифицированная версия утилиты импорта дампов importdp.sh стала выдавать ошибку:

./importdp.sh MY_NEW_SCHEMA mydumpfile.dmp

-----------------------------------------
Restoring from E USER to MY_NEW_SCHEMA using dump mydumpfile.dmp ...
-----------------------------------------

Import: Release 11.2.0.4.0 - Production on Thu Dec 8 19:23:40 2016

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
UDI-00014: invalid value for parameter, 'remap_schema'

Оказалось, что для подкрашивания текста grep добавляет к найденной строке дополнительные символы, что влияет на длину результирующей строки: визуально строка выглядит прежней, но на деле она становится длиннее за счет доп.символов, например, команда
echo "foo"
выведет на экран слово из 3-х букв:
foo
команда
expr length `echo "foo"`
сообщит, что слово длиной 3 символа:
3
команда
echo "foo"|grep foo
выведет на экран все то же слово "foo", только в этот раз оно будет подкрашено (по-умолчанию красным):
foo
вроде бы, ничего особенного, визуально, также 3 символа, но если посчитать количество символов в строке с помощью команды
expr length `echo "foo"|grep foo`
то результат будет:
19
потому что на самом деле строка уже состоит не только из слова, но еще и из управляющих символов, которые можно увидеть с помощью команды:
echo "foo"|grep foo|less
результатом которой будет
ESC[01;31mfooESC[00mESC[K

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

Архив