2017-01-24 5 views
-1

大量のデータをOracleにインポートするには、いくつかのバットファイルを実行する必要があります。 私は1つのバットファイルしか実行しません。Oracleはバットファイル内のバッチファイルをインポートします

バッチファイルは、このようなseparetedサブフォルダにあります。

g:\1\import.bat 
g:\2\import.bat 
... 
g:\n\import.bat 

そして、彼らは次のようになります。私はこのバットでそれらのすべてを実行しようとした

@echo off 
REM Copyright (c) 1999-2004 by Intergraph Corporation. All Rights Reserved. 
REM Use this script to create feature class tables via SQL and populate tables with SQL*Loader. 
REM The GDOSYS schema is no longer created via this script. If you want metadata to be loaded, 
REM GDOSYS needs to exist prior to running import. You may use Database Utilities to create GDOSYS. 
REM If you are using a comma for a decimal separator, set the NLS_NUMERIC_CHARACTERS parameter: 
REM SET NLS_NUMERIC_CHARACTERS=,. 
if "%1"=="" goto usage 
SQLPLUS %1> @"kat_ki_vectors_epulet_i_pre.sql" 
SQLLDR %1 CONTROL='kat_ki_vectors_epulet_i' 
SQLPLUS %1 @"kat_ki_vectors_epulet_i_post.sql" 
goto end 
: usage 
echo SYNTAX: "Import username/[email protected]" 
echo WHERE: 
echo - username/password is the Oracle user account where the data will be loaded. 
echo - ConnectString is the Oracle NET string used to connect to the Oracle server. 
echo See the document "Working with GeoMedia Professional" for more 
information. 
echo EXAMPLES: 
echo Import scott/[email protected]_orcl 
: end 
pause 

ファイル(適切な認証あり):

call g:\1\import.bat ###/###@###.## 
call g:\2\import.bat ###/###@###.## 
... 
call g:\n\import.bat ###/###@###.## 

が、これは私が得たものである:

G:\>do_the_trick.bat 
G:\>call g:\1\import.bat ###/###@###.## 
SQL*Plus: Release 11.1.0.6.0 - Production on K. Jan. 24 15:35:08 2017 
Copyright (c) 1982, 2007, Oracle. All rights reserved. 
Kapcsolódási cél: 
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 
SP2-0310: nem lehet megnyitni a(z) "kat_ki_vectors_epulet_i_pre.sql" fájlt 

"Kapcsolódási cél" ---> "Connecting target" 
"nem lehet megnyitni a(z) " ---> "Can not be opened" 

しかし、私は直接

G:\1>import.bat ###/###@###.## 

最初のbatファイルを実行すると、インポートが開始されます。

試してみてください!

+0

違いは、バッチをサブディレクトリから手動で実行することです。 – LotPings

答えて

1

このバッチは機能し、可能な限り最大数を設定する必要があります。 バッチは現在の最高数値を評価します。

@Echo off 
CD /D "G:\" 
:: first get the highest number increase if max > 1000 
For /L %%N in (1,1,1000) Do If Exist "G:\%%N" (Set Max=%%N) Else Goto :Cont 
:Cont 
:: iterate through all numbered subdirs 
For /L %%N in (1,1,%Max%) Do (
    Pushd "G:\%%N" 
    Call import.bat ###/###@###.## 
    PopD 
) 

あなたは

@Echo off 
For /D %%A in (G:\*) Do (
    Pushd "%%~fA" 
    Call import.bat ###/###@###.## 
    PopD 
) 

EDITに手動で、アクノリッジを行う必要がimport.batないようにエコーパイプ(空の)別のバージョンを使用することができG:\ALLサブディレクトリを取得します。また、import.batの存在を確認します

@Echo off 
Set App=Import.bat 
Set Cred=###/###@###.## 
For /D %%A in (G:\*) Do (
    Pushd "%%~fA" 
    If Exist %APP% Echo:|Call %App% %Cred% 
    PopD 
) 
+0

さて、ちょっと誤解を招いていました。サブフォルダの名前の数字は、サブフォルダが多数あることを表しています。 実名は英数字です。 しかし、Import.batを含む3つのサブフォルダでスクリプトを試しました。 G:\ 1 \ G:\ 2 \ G:\ 3 \ そして、それは私が得たものである: "システムは指定されたバッチのラベル​​を見つけることができません - 続き" – STO

+0

@STO申し訳ありませんが、私の障害は、単に忘れてしまいました(上記変更)。あなたは 'G:\'のすべてのサブフォルダを処理しますか? – LotPings

+0

@STO 'G:\ 'の** ALL **サブディレクトリを反復するバージョンを追加しました。 – LotPings

関連する問題