Как разделить большой запрос в командной строке?

#sql #database #oracle #docker

Вопрос:

Я установил oracle db версии 19c в своей среде docker и настроил базу данных, заполненную фиктивными данными. Тем не менее, когда я пытаюсь выполнить очень большой запрос, я получаю ошибку:

SP2-0341: переполнение строки при замене переменной (>3000 символов в строке 1).

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

ОШИБКА в строке 2: ORA-00933: неправильно завершена команда SQL

или

ОШИБКА в строке 2: SP2-0341: переполнение строки при подстановке переменных (>3000 символов в строке 3)

Запрос отформатирован следующим образом

 SELECT AA.n_name AS AA_n_name, AA.n_nationkey AS ...
FROM nation AS AA FULL OUTER JOIN supplier...
WHERE (AC.p_partkey = ... AND...) OR((AC.p_partkey = ...)); -- The where part is over 5000 characters long--
 

Есть ли альтернатива или решение для решения этой проблемы в командной строке? Я также попытался запустить запрос в виде файла sql и достиг предела 4999. Я нахожусь на сервере Ubuntu, если это поможет, и любая помощь будет оценена по достоинству.

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

1. Вы можете вставлять новые строки в любом месте вашего сценария

2. Когда я сказал «разрывы строк», я имел в виду новые строки, так что, к сожалению, я все еще застрял.

3. Какова длина всего вашего запроса и почему он такой огромный?

4. Он содержит более 6000 символов и предназначен для проекта, над которым я работаю.

5. Тогда похоже, что запрос неправильно сформирован, потому что разрывы строк разрешены в любом месте и никогда не приводят к какой-либо ошибке. Я не могу представить себе рукописный запрос длиной 6000 строк, расположенный в одной строке: никто не напишет его правильно с одной попытки, и для удобства чтения он должен быть написан шаг за шагом с соответствующим форматированием. Так грустно, но, похоже, на этот вопрос нельзя ответить

Ответ №1:

Это зависит от среды, в которой вы работаете, но, как правило, вы можете продолжить команду в следующей строке, закончив строку «обратной косой чертой».

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

1. Спасибо за предложение, я пробовал это раньше, но, к сожалению, это приводит к ошибке: ORA-00933: команда SQL неправильно завершена .

2. Запрос действительно был неправильным, и когда он был исправлен, это решение сработало.