проблема с оракулом sqlplus с пробелом в пути команда

С Vim на использовании Windows Ctrl + Q вместо Ctrl + V

8
задан Stephen 28 July 2009 в 20:38
поделиться

5 ответов

Я подключился к одному из своих компьютеров с Linux и довольно легко смог воспроизвести эту проблему. Кажется, я не могу найти способ выполнить файл с параметром '@' из командной строки, поэтому я думаю, что у вас остались следующие варианты для обхода:

  1. Переименуйте Каталог My Schema , чтобы в нем больше не было места (а также обновление всех других сценариев, которые ссылаются на него
  2. Выполните файл из каталога, в котором он находится (я подтвердил, что это работает, см. Ниже)
  3. Отправьте файл в sqlplus через stdin (см. Ниже)

Вы также должны отправить отчет в службу поддержки Oracle, так как они могут предоставить простое исправление.

Примеры команд:

From Directory

cd ../database/My\ Schema
sqlplus [uname]/[pw] @create_sequence.sql

Через стандартный ввод

sqlplus [uname]/[pw] < ../database/My\ Schema/create_sequence.sql
5
ответ дан 5 December 2019 в 17:39
поделиться

Что ж, если это проблема Linux (см. Мой комментарий к вашему вопросу - он отлично работает на Solaris), вам, возможно, придется попробовать что-то вроде:

sqlplus [uname]/[pw] < '../database/My Schema/create_sequence.sql'

Вы сталкиваетесь с проблемы, если вы пытаетесь передать параметры в свой sql-скрипт, однако ...

РЕДАКТИРОВАТЬ: Похоже, возникла проблема с Metalink для очень похожей проблемы: «Ошибка 7150873 SQL-скриптов с именем файла, содержащим пробелы, приводит к SP2- 0556 ". Он указан как влияющий на 10.2.0.4 и 11.1. Предположительно он исправлен в 10.2.0.5 и 11.2, но ни то, ни другое пока не доступно. В нем говорится, что это общая проблема, затрагивающая большинство / все платформы, поэтому я не знаю, ваша проблема или нет.

Конкретный текст проблемы: «Команде SQLPLUS START не удается выполнить сценарии SQL, которые имеют пробел в имени файла "

Просто для усмешки, что произойдет, если вы сделаете следующее:

sqlplus [uname]/[pw]
start '../database/My Schema/create_sequence.sql'

EDIT2: Я не знаю, возможно ли массовое изменение ваших скриптов, но может быть обходной путь:

cp '../database/My Schema/file2run.sql' ./temp.sql
sqlplus [uname]/[pw] @temp.sql
rm ./temp.sql

Вам нужно будет обернуть каждый вызов sqlplus таким образом. Другой вариант - создать сценарий оболочки, скажем, с именем mysqlplus.sh:

#!/bin/sh
cp $2 ./temp$$
sqlplus $1 @$2
rm ./temp$$

. Затем измените сценарии сборки следующим образом:

mysqlplus.sh [uname]/[pw] '../database/My Schema/create_sequence.sql'
3
ответ дан 5 December 2019 в 17:39
поделиться

Согласно этот поток на сайте OTN, SP2-0556 может быть вызван недопустимым символы пробела в исполняемом файле. Вероятно, версия SQL-Plus для Linux не знает, как работать с символом (-ами) новой строки Windows. Попробуйте удалить существующий файл и воссоздать его с помощью желаемых команд (вы сказали, что есть только 2 команды DDL, поэтому это должно быть легко).

1
ответ дан 5 December 2019 в 17:39
поделиться

вы пробовали экранировать пробел?

Попробуйте:

sqlplus [uname]/[pw] @'../database/My\ Schema/create_sequence.sql'
0
ответ дан 5 December 2019 в 17:39
поделиться

Если вы работаете с этим под Linux, вы можете экранировать пробел с помощью символа '\', например:

sqlplus [uname]/[pw] @../database/My\ Schema/create_sequence.sql
0
ответ дан 5 December 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: