2016-11-16 55 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中的项目中。因此,正如上面的评论所述,了解所有项目中使用的所有属性的唯一方法是遍历所有项目,并在每个项目中建立一组属性。