2017-05-26 18 views
0

私はハイフン( ' - ')をアンダースコア( '_')に置き換えるハイブテーブルを持っています。テーブル名にハイフン(ダッシュ)を置き換える方法は?

CREATE TABLE test_${yearAndMonth} ...... 
INSERT OVERWRITE TABLE test_${yearAndMonth} ...... 

「yearAndMonthは」のような値が含まれています: サンプルクエリはようである2017から05に。だから、私はtest_2017_05としてテーブルの値の名前を持っています。ただし、 'yearAndMonth'にはハイフン値が含まれている必要があります。

私が試してみました

:正規表現は、たとえば を置き換える:

CREATE TABLE test_${regexp_replace(yearAndMonth, '-', '_')} ...... 
INSERT OVERWRITE TABLE test_${regexp_replace(yearAndMonth, '-', '_')} ...... 

しかし、私のようにエラーを取得しています:
する '{' テーブルでナ '$' 'TEST_' に近い入力を認識することはできません私

お願いします。

アップデート:私はこのエラーを取得しています

CREATE TABLE test_regexp_replace(${yearAndMonth}, "-", "_") ...... 
INSERT OVERWRITE TABLE test_regexp_replace(${yearAndMonth}, "-", "_") ...... 

:この中にしようと は方法だった は内の変数のフォーマットを変更する '(' の近くに 'test_regexp_replace'

+0

**(1)**あなたはHive変数が何であるか誤解しています。 https://stackoverflow.com/questions/42887401/storing-result-of-query-in-hive-variable/42887453#42887453を確認してください。 **(2)**正しい形式で変数を渡す必要があります。 –

答えて

0

でEOFを逃しますハイブは良い考えではありません。渡す前に書式を変更してみてください。以下のようなやり方で動作します(サンプル列としてid intを追加しました。必要に応じて別の変数から追加することもできます)

hive --hiveconf table_name=table_$(date '+%Y')_$(date '+%m') -e "create table \${hiveconf:table_name}(id int); insert overwrite table \${hiveconf:table_name}" 
関連する問題