2012-02-08 4 views
1

Можно ли подключить несколько соединений SQL * PLUS в сценарии оболочки?Проблема с соединениями SQL * PLUS в скрипте оболочки

Я написал сценарий оболочки, чтобы скопировать данные таблиц из одной базы данных в другую с помощью команды COPY SQL * PLUS. У меня нет права создавать ссылку на базу данных, поэтому я использую команду COPY.

Мне нужно скопировать данные около 50 таблиц. Когда набор данных невелик, он запускает и копирует данные всех таблиц. Но когда набор данных огромен, он застревает, и я получаю сессионное неактивное сообщение на машине unix.

Я думал о разделении утверждений и написал его, как показано ниже: Но я получаю сообщение об ошибке «SP2-0042: неизвестная команда« END1 »- остальная строка игнорируется». и "SP2-0042: неизвестная команда" END "- остальная строка игнорируется."

#!/bin/bash 
export ORACLE_HOME=/ora00/app/oracle/product/9.2.0.8 
export PATH=$PATH:$ORACLE_HOME/bin 

args=$# 

if [ $args == 1 ] 
then 
    echo "Shell script started" 
else 
    echo "Wrong number of arguments" 
exit 1 
fi 

time_start=`date +%H%M%S` 
echo $time_start 

    sqlplus -s srcUN/[email protected] <<END1  
    COPY from srcUN/[email protected] to dstUN/[email protected] INSERT tab1 USING SELECT * FROM tab1 WHERE col1 = $1; 
    COPY from srcUN/[email protected] to dstUN/[email protected] INSERT tab2 USING SELECT * FROM tab2 WHERE col1 = $1; 
    END1 

    sqlplus -s srcUN/[email protected] <<END2 
     COPY from srcUN/[email protected] to dstUN/[email protected] INSERT tab3 USING SELECT * FROM tab3 WHERE col1 = $1; 
    END2 

#END 

Не могли бы вы помочь мне разрешить это?

Спасибо, САВИТА

+0

Название вашего вопроса немного вводит в заблуждение - это похоже на вопрос сценария оболочки. Вы можете получить больше экспертов сценария оболочки, рассматривающих это, если вы измените заголовок. – Jolta

+0

Спасибо, Jolta. Я изменил название ... надеюсь, что он работает сейчас. :) – Savitha

ответ

6

Проблема заключается в том, что END1 и END2 не признаются конца перенаправления ввода, потому что они ведущие пробелы.

Удалите все пробелы на этих двух строках, и оно должно работать.

+0

Большое спасибо Codo ... :) – Savitha

Смежные вопросы