开发者社区 > 云存储 > 正文

表格存储的新增字段,老数据没有,可以设定默认值吗?

表格存储的新增字段,老数据没有,可以设定默认值吗?

展开
收起
真的很搞笑 2023-05-02 23:37:23 156 0
2 条回答
写回答
取消 提交回答
  • 这个不支持的,此回答整理自钉群“表格存储技术交流群-2”

    2023-05-03 18:57:48
    赞同 展开评论 打赏
  • 是的,阿里云表格存储的新增字段可以设置默认值。在表格存储中新增字段后,如果某些行没有该字段,可以通过在表结构定义时指定该字段的默认值来自动填充该字段的值。

    例如,在创建表时,可以指定该表新增的一个字段 "new_field",并设置该字段的默认值为 "default_value":

    from tablestore import *
    from tablestore.plain_buffer_builder import *
    from tablestore.metadata import *
    
    table_name = 'your_table_name'
    new_field = 'new_field'
    
    # 设置该字段的默认值
    defined_columns = []
    defined_columns.append(DefinedColumnSchema(new_field, DefinedColumnType.STRING, True, "default_value"))
    
    # 创建表
    try:
        table_meta = TableMeta(table_name, defined_columns)
        table_option = TableOptions(-1, 1)
        reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
        client.create_table(table_meta, table_option, reserved_throughput)
        print("Create table succeeded")
    except Exception as ex:
        print("Create table failed:", ex)
    
    

    如果某个行没有该字段,那么在写入数据时,可以不指定该字段的值,该字段就会被自动填上默认值:

    from tablestore import *
    from tablestore.plain_buffer_builder import *
    
    table_name = 'your_table_name'
    pk = [('PK1', 1), ('PK2', 'abc')]
    new_attr_name = 'new_field'
    
    # 只写入必填的数据项
    put_row_item = {
        "PK1": 1,
        "PK2": "abc",
        "attr1": "value1",
        "attr2": "value2",
    }
    
    # 写入数据时不指定新增字段,该字段会自动填充默认值
    put_row_item[new_attr_name] = None
    
    # 插入数据到表格存储中
    put_row = PutRowItem(row, [])
    put_row.row_data = Row(pk, put_row_item)
    consumed, return_row = client.put_row(table_name, put_row)
    print(f"Put row succeeded, consume:{consumed.capacity_unit.total_write_capacity_unit}")
    
    

    如果某些行已经有了该新增字段的键值对,那么通过更新操作来为这些行添加该字段的默认值即可。

    需要注意的是,如果该新增字段是必填字段,且某个行没有该字段的值,那么该行将无法通过数据校验,如果是非必填字段,则可以不添加该字段,否则可能会影响后续数据处理的正确性。

    2023-05-03 07:55:50
    赞同 展开评论 打赏

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

相关电子书

更多
TableStore在社交类场景下的应用 立即下载
表格存储实时数据流Steam的技术揭秘和应用场景 立即下载
表格存储(TableStore) 立即下载