2017-02-06 8 views
0

、フォーマットは以下の通りである。にVertica COPY + FLEXテーブル

(多くの試行の後)
"concorde-fe";"DETAILS.SHOWN";"1bcilyejs6d4w";"2017-01-31T00:00:04.801Z";"2017-01-31T00:00:04.714Z";"{"requestedFrom":"BUTTON","tripId":{"request":3003926837969,"mac":"v01162450701"}}" 

と私はこのようにCSVパーサでCOPYコマンドを使用しています:

COPY schema.flex_table from local 'C:\temp/test.log' parser fcsvparser(delimiter=';',header=false, trim=true, type='traditional') 

をすべて、JSONを除いて正しくロードされているこのように、それはスキップされ、空のままにされます。

JSONを文字列として読み込む方法はありますか?

ヒント:JSONの場合、すべての '' 'をログに記録するとスムーズに読み込みが実行されますが、残念ながらログの内容は変更できません。

事前にファイルを変更することなく

答えて

0

ない - あるいはあなた自身のUDParser機能を書い

それは明らかに奇妙な形式です:。子供たちが現れるまで、CSV(まあ、セミコロン区切りの文字列のenclosersとして二重引用符付き) - あります先頭の二重引用符と末尾の二重引用符で格納され、中括弧で二重に入れ子になっています - JSON型、okですが、JSONエンコーディング内に二重引用符(二重ではありません)があります。

あなたがラインから、JSONコードで列名を削除し、

だからCSVラインを残すために、中括弧を削除するには(理想的にCで)プログラムを記述する必要があります(バックスラッシュ最後に)あなたが見る3行は読みやすくするため、実際には1行であることを意味し、エスケープ改行を意味

"concorde-fe";"DETAILS.SHOWN";"1bcilyejs6d4w";"2017-01-31T00:00:04.801Z"; \ 
"2017-01-31T00:00:04.714Z"; \ 
"{"requestedFrom":"BUTTON","tripId":{"request":3003926837969,"mac":"v01162450701"}}" 

ます(列名、データ・ラインとのタイトル行)

col1;col2;col3;timestampz1;\ 
timestampz2;requestedfrom;tripid_request;tripid_mac 
"concorde-fe";"DETAILS.SHOWN";"1bcilyejs6d4w";"2017-01-31T00:00:04.801Z"; \ 
"2017-01-31T00:00:04.714Z";"BUTTON";3003926837969;"v01162450701" 
作ります最後に、あなたはCSVファイルとしてそれをロードすることができるでしょう - と、多分あなたは再びすべてを正規化する必要があります: tripIdは幸運

....依存構造であるように思わ

マルコSane

関連する問題