2016-11-16 83 views
0

最佳AWS DynamoDB - Boto3獲得所有屬性,字段名,列標題從dynamoDB表/結構

在這一刻我使用Boto3在Python 2.7和我想得是: 列標題我的特定DynamoDB表的。

在這一刻,我正在處理一個非常大的dynamoDB表,有80列和+ 1.00O.000記錄。而我的任務就是操縱這些數據。爲此,我正在使用塊。這意味着我每次從我的數據表中檢索1000行,並操作它們並將新結果寫入csv。 (由於某些原因,這是必需的)。

但是因爲我使用塊,可能並非每個塊都包含80列,這意味着它有時可以包含79列或78列。當沒有可用於塊中特定列的值時會發生這種情況。

而這是不可取的,因爲在一天結束時,所有的csv應該再次彼此連接,因此,每個csv應包含等量的列。

因此,我的想法,我已經是:將空列添加到chunk-csv的不包含所有必需的列。

但是,因此,我必須知道,標題,屬性,字段名稱是從我的表(或結構)+的東西是,這些列標題是動態的,不能有一個靜態列表頭文件它可以是,突然新記錄添加了一個獨特的列(這意味着下一次,我會收到81列我的每個csv的) - 因此,這些頭知識應該來自我的表/亞馬遜aws

親切的問候

+0

我認爲不可能從所有記錄中獲取屬性名稱,並在不讀取表格中的所有項目的情況下對其進行整理。 – notionquest

回答

2

你可以得到一些你正在使用Table對象的屬性attribute_definitions,像這樣尋找信息的:

import boto3 
ddb = boto3.resource('dynamodb') 
table = ddb.Table('MyTable') 
attrs = table.attribute_definitions 

變量attrs現在將包含您在創建表時明確定義的所有屬性的字典,該表通常只是在某些索引中用作鍵的屬性。

但是,由於DynamoDB的模式較少,因此您可以將任何其他屬性的組合存儲在DynamoDB中的項目中。因此,正如上面的評論所述,瞭解所有項目中使用的所有屬性的唯一方法是遍歷所有項目,並在每個項目中建立一組屬性。