2014-09-29 36 views
0

我有一個看起來是這樣的服務器日誌數據:如何將嵌套json數據導入到多個連接的redshift子表中?

2014-04-16 00:01:31-0400,583 {"Items": [ 
    {"UsageInfo"=>"P-1008366", "Role"=>"Abstract", "RetailPrice"=>2, "EffectivePrice"=>0}, 
    {"Role"=>"Text", "ProjectCode"=>"", "PublicationCode"=>"", "RetailPrice"=>2}, 
    {"Role"=>"Abstract", "RetailPrice"=>2, "EffectivePrice"=>0, "ParentItemId"=>"396487"} 
]} 

我想連接兩個表的關係型數據庫是什麼 - 一個UsageLog表和UsageLogItems表,由一個主鍵ID連接。

你可以看到UsageLog表將具有像精密組件:

UsageLogId 
Date 
Time 

和UsageLogItems表將有一個像

UsageLogId 
UsageInfo 
Role 
RetailPrice 
... 

領域然而,我無法寫入到這些紅移並且是能夠將每個記錄與唯一的和相關的ID作爲關鍵字相關聯。

我現在正在做的是使用ruby腳本讀取日誌文件的每一行,解析出UsageLog信息(如日期和時間),將它寫入數據庫(寫入單行到Redshift非常非常慢),然後從UsageLogItems信息中創建一個csv數據,並通過S3將其導入到Redshift中,查詢UsageLogs表的最大id並使用該數字關聯兩者(這也很慢,因爲很多UsageLog不會包含任何項目,所以我經常從csv文件加載0條記錄)。

這個目前確實有效,但是它的速度太慢並且效果太差。有沒有更好的方法來處理這個問題?

回答

相關問題