2016-10-31 10 views
1

テーブルを作成するSQL文(ExecuteSql proc)を実行しようとしていますが、テーブルの名前はfilename属性に基づいており、ExecuteSQlが実行されるとテーブルが作成されますファイルを任意の関係にルーティングします。NiFi-1.0.0 - ExecuteSQL CrateIO

私はこれがCrateIOでテーブルを作成するためには、 ";"最後に。もし私がそれを行うならば、私もエラーが発生します。

アイデア?

答えて

2

ExecuteSQLは、ResultSetを返すクエリを対象としています。テーブル作成(と他のDDLステートメント)のようなもののためにPutSQLを試してみてください。セミコロンは必要ありませんが、どちらの方法でCrateIOが好きなものを見ることができます。

EDIT(コメントに返信):あなたがGETFILE後と前ReplaceTextプロセッサと同様のことを行うことができます

CREATE TABLE ${filename} (myColumn1 STRING, myColumn2 INT, ...) 

:あなたはは、ExecuteSQLでクエリを指定している場合、それはおそらくのようになりますPutSQL。 ReplaceTextは、あなたのSQLクエリーにフローファイルの内容を設定します。これはPutSQLが望むものです。

EDIT 2:カスタムロジックが必要な場合は、スクリプトプロセッサとフルカスタムプロセッサを作成することが考えられます。次に、CREATE TABLEを生成してから、CSV行をINSERT文に変換します。 DBに接続したい場合は、blog postでDBCP接続プールの使用方法を確認してください。

+1

ファイルの名前に基づいてテーブルを作成する必要があります。私はPutSQLを使ってどのようにできるのか正確には分かりません。 私は次のようなものを持っています:[GetFile] ----> [ExecuteSQL] ---->残りの流れ。 私は、CrateIOのファイルごとに別のテーブルのディレクトリからいくつかのファイルを挿入して、そのファイルを別のディレクトリに移動しようとしています。 – bsd

+1

PutSQLを使用するには、ConvertJSONToSQLのようなものが必要です。このプロセッサのプロパティは、INSERTとUPDATEしかありません。 PutSQLプロセッサのマニュアルページ: _ SQL UPDATEまたはINSERTコマンドを実行します。入ってくるFlowFileの内容は、実行するSQLコマンドであると予想されます。 – bsd

+1

実行したいSQLはまだ持っていませんか?クエリのExecuteSQLには何を入れていますか? – mattyb

関連する問題