2017-03-09 8 views
0

テーブルサンプルを作成したいのですが、9個のカラムがあり、読み込むデータには6カラムしかありません。私のLinuxシステム名、Linux現在のシステムの日付、Linuxの現在の時刻を最初の3つの列に格納し、残りのデータをそれぞれの列にロードします。最後のテーブルはthis.couldのようになります。 注:sys_name | sys_date | sys_time |列データはLinuxシステムからインポートされ、残りの列データはデータセットの実際のデータからのものです。システム名、システムの現在の日付、時刻をハイブテーブルにインポートする

select * from sample; 

sys_name|sys_date|sys_time|column4|column5|column6|column7|column8|column9| 
linux 2017-03-09 21:00 data4 data5 data6 data7 data8  data9 
linux 2017-03-09 22:00 data4,4 data5,5 data6,6 data7,7 data8,8 data9,9 
+0

will yあなたの質問を詳細に説明してください。私は最初にデータを読み込むときに6列、2度目にロードすると9列になるはずです。 –

+0

sys_name | sys_date | sys_timeの値を手動で入力するか、どこかから取得していますか? –

+0

私は列を追加しますが、私のLinuxターミナルの時刻と日付を取ってデータをロードする必要があります – Vizram

答えて

0

使用Alter tableあなた#sample

ALTER TABLE #sample ADD sys_name VARCHAR(20) NULL, sys_date Date,some_name varchar(20) NULL; 
+0

これは質問に答えません –

0

に列を追加するには、私は別のテーブルにcolumn9(そうでない場合は、上部の外部表を作成することcolumn4からあなたが列を持っていると仮定していますデータ)の場合、select文の最初の3つの列をハードコードし、以下の「selectを使用して挿入」文を使用して新しい表にデータをロードできます。

create table sample(
sysname string, 
sysdate date, 
some_name string, 
column4 string, 
. 
. 
column9 string) 
rowfromat delimited 
fields terminated by '|' 
stored as textfile; 

Insert into table sample select 'linux' as sysname, date(current_timestamp) as sys_date, 'name' as some_name, col4, col5, col6, col7, col8, col9 from original_table 
関連する問題