我正在尝试通过azure存储资源管理器从csv文件加载/导入数据到表存储, 但我收到以下错误
An error occurred while opening the file 'D//sample.csv'.the required property 'Partitionkey' was not specified.
请说明Partitionkey和Rowkey在azure表存储中的重要性?
答案 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存储表添加实体,我们可以看到,更多细节请参考屏幕截图。
因此,如果我们尝试导入.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
注意:我们在尝试导入数据时也应该知道一些Azure storage table limitation,更多细节请参考azure文档。
- 表实体的最大大小1 MB
- 表实体252中的最大属性数
答案 3 :(得分:0)
我建议您将Windows中的区域更改为英语(美国)。因此,您可以将电子表格以逗号保存为CSV文件,而不是以分号作为分隔符。
例如,如果您使用的是瑞士,则会得到一个以分号作为分隔符的CSV文件,而azure找不到分区键。