2017-11-27 9 views
0

OracleストアドプロシージャをSqoopから呼び出したいのですが、エラーが表示されます。私はストアドプロシージャの関数を呼び出す必要があり、パラメータを渡す必要があります。SqoopからOracleストアドプロシージャを呼び出すことができません

$: sqoop import --connect jdbc:oracle:thin:@localhost:1512/db --username userA --password password --call Oracle_Schema.pkg_table_maintenance.sf_drop_index('TBL_A_%','Group_id') 

-bash: syntax error near unexpected token `(' 

$: sqoop import --connect jdbc:oracle:thin:@localhost:1512/db --username userA --password password --call "Oracle_Schema.pkg_table_maintenance.sf_drop_index('TBL_A_%','Group_id')" 

Warning: /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p1246.1021/bin/../lib/sqoop/../accumulo does not exist! Accumulo imports will fail. 
Please set $ACCUMULO_HOME to the root of your Accumulo installation. 
17/11/27 10:31:31 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5-cdh5.4.7 
17/11/27 10:31:32 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead. 
17/11/27 10:31:32 ERROR tool.BaseSqoopTool: Error parsing arguments for import: 
17/11/27 10:31:32 ERROR tool.BaseSqoopTool: Unrecognized argument: --call 
17/11/27 10:31:32 ERROR tool.BaseSqoopTool: Unrecognized argument: Oracle_Schema.pkg_table_maintenance.sf_drop_index('TBL_A_%','Group_id') 

助けてもらえますか?

+0

は、「$ ACCUMULO_HOMEをAccumuloのインストールのルートに設定してください。 –

答えて

1

Sqoopでは、インポートするときではなく、エクスポートするときにのみSQLプロシージャを呼び出すことができます。

0

ストアドプロシージャでは、sqoop-importを使用してインポートする何らかの選択が機能しない場合、sqoopインポートにはその柔軟性がありません。

しかし、あなたのストアドプロシージャを使用すると、Oracleデータベースで実行されているかのように

sqoop eval --connect jdbc:oracle:thin:@localhost:1512/db --username userA --password password --query "EXECUTE Oracle_Schema.pkg_table_maintenance.sf_drop_index('TBL_A_%','Group_id')" 

--queryは「クエリを実行します以下sqoop evalのユーティリティを使用することができ、クリーンアップ動作のいくつかの種類をやっている場合は、 oracleクライアント・アプリケーション/コマンドラインから使用するのと同じSQL構文を使用することができます。

関連する問題