在azure表存储中未指定PartitionKey

时间:2017-07-26 11:33:05

标签: azure azure-storage azure-storage-blobs azure-table-storage

我正在尝试通过azure存储资源管理器从csv文件加载/导入数据到表存储, 但我收到以下错误

An error occurred while opening the file 'D//sample.csv'.the required property 'Partitionkey' was not specified.

enter image description here

请说明Partitionkey和Rowkey在azure表存储中的重要性?

4 个答案:

答案 0 :(得分:0)

分区键和行键指定行的唯一索引;两者的结合必须是独一无二的。我建议再多阅读here了解更多详情。

答案 1 :(得分:0)

Azure存储密钥已在此处讨论:Azure Table Storage Partition Key

为了理解这一点,您需要知道分区是什么。每当您将内容上传到 Azure存储时,都会将其分配给某个分区。这些分区可以在同一服务器上,也可以在不同的服务器上。分区也可以跨服务器移动。让我们假设池中有5台服务器,其中一台服务器( Server 2 )正在承受高负载。然后,Azure Storage会将分区从服务器2移动到另一台服务器,以均匀分配负载。它也将根据数据的大小做出这个决定。

在表存储的情况下,用户决定数据的位置。对于 blobs 队列,情况并非如此。

因此,在表存储中,您必须自己指定分区键。

我建议你阅读这些链接,以便进一步理解这个主题:

因此, PartitionKey 用于指定要存储数据的分区。它充当唯一标识符,并构成主键(上半部分)的一部分。 RowKey 是用于构成主键的后半部分的另一个属性。它标识给定分区中的实体。因此,无论何时执行任何操作,您都需要同时指定 PartitionKey &的 RowKey

PartitionKey RowKey 一起唯一标识表中的每个实体。

答案 2 :(得分:0)

正如Isaac Abraham所提到的,每个实体都应该具有Partition Key和Row Key属性,并且两者的组合对于表实体是唯一的。这是强制性的。 如果我们尝试使用azure存储资源管理器工具为azure存储表添加实体,我们可以看到,更多细节请参考屏幕截图。 enter image description here

因此,如果我们尝试导入.csv文件,则该文件的格式应为名为 PartitionKey RowKey 的列。名称为case sensitive。以下是.csv文件演示

PartitionKey,RowKey,Column1,Column2
test,x,testdata,testdata
test,xx,testdata,testdata
test,xxx,testdata,testdata
test2,x,testdata,testdata

enter image description here

注意:我们在尝试导入数据时也应该知道一些Azure storage table limitation,更多细节请参考azure文档。

  
      
  • 表实体的最大大小1 MB
  •   
  • 表实体252中的最大属性数
  •   

答案 3 :(得分:0)

我建议您将Windows中的区域更改为英语(美国)。因此,您可以将电子表格以逗号保存为CSV文件,而不是以分号作为分隔符。

例如,如果您使用的是瑞士,则会得到一个以分号作为分隔符的CSV文件,而azure找不到分区键。