2016-08-26 5 views
0

複数のハイブクエリをファイルに分割し、それらをループしてscala/sparkを使用して実行しようとしています。私は.split(";")を使用しています。しかし、クエリ自体にセミコロンが付いていると問題が発生しています。クエリにセミコロンが含まれている場合、複数のハイブクエリを分割する

select * from table where value='myName\;is\;Name'; 
select * from table; 

どのように私は、最初のクエリにセミコロンをエスケープすることができ、このパターンを確認してみましょうScalaの

+0

各行は新しい行にありますか?もしそうなら、あなたは "\ n"で分割することができます –

+0

私は質問ファイルがユーザーであるかどうか分かりませんので、必要でないことがありますので、改行してください。 –

+0

あなたは分割したいだけです。 \をスキップします。 –

答えて

0

で2件の個別の問い合わせに上記分割:Javaでは

.split("(?<!\\\\);") 

、それが正しいを返します出力がありますが、Scalaでうまく動作しているかどうかはわかりません。

パターンの平均:Find the;前に\ではない。 詳細については、 "Negative look behind"正規表現があります。

+0

これは、ユーザーがエスケープした場合にはうまくいきます。クエリは次のようになります。
'select * from table where value = 'myName; is; Name'; がテーブルから選択*; ' –

+0

その後、私はあなたがそれらを認識するルールを定義することがあると思います。あなたの本当のコンテキストに基づかなければならないのです...セミコロンなしで続くセミコロン対「を選択」「クエリ」で従って、通常のセミコロン対セミコロンをエスケープし、行末のセミコロン対インラインセミコロン:それらの間に1つの主な違いを探します。 –

+0

ok、情報ありがとう:) –

関連する問題