【问题标题】:Importing CSV to Azure Table Storage Issue将 CSV 导入 Azure 表存储问题
【发布时间】:2017-01-06 22:36:27
【问题描述】:

我从 MySQL 服务器导入了大约 200 行导出表。我不知道我需要一个分区键和行键,所以我通过 CSV 设置它,创建 2 个新列并用表名填充它们。比我导入了 CSV。它向我展示了第一个条目,它看起来很好,所以我导入它而不是中途我收到一个错误,说 N/A 是不可接受的并且它退出了。查看导入的数据完全关闭。

我做错了什么?

我需要再导入大约 200 个表。

示例数据:不是实际数据,因为它是我的用户表(不是关系表)

使用 Azure 表存储资源管理器导入

列:名称|用户名|电子邮件 |哈希 |盐 |分区键|行键 第 1 行:珍妮特|管理员| admin@gmail.com| 203weg0897wg| 33&23j |网站 |网站

事情就是这样。但是,当我导入第一行时,比列乱了,而不是像用户名进入分区键和类似的东西。它没有被导入到正确的列中。

是的,我确实将表名作为分区键和行键。我没有意识到每个实体都需要它是不同的。但我需要知道哪个实体来自哪个表。我应该把它们放在不同的分区吗?我需要它们都放在一张桌子上。解决办法是什么?

【问题讨论】:

  • 您能否使用以下信息更新您的问题:1)您正在导入的示例数据(第一行应该没问题),2)请解释您的意思 Looking at the data imported it's completely off. 和 3 ) 你是如何导入数据的?您是否使用某种工具进行导入?
  • 您说您“通过 CSV 设置它,创建 2 个新列并用表名填充它们”。您是否对分区键和行键都使用了表名?这两列构成了表的主键,因此两者的组合对于表中的每个实体都需要是唯一的。

标签: mysql csv azure azure-table-storage


【解决方案1】:

但是当我导入第一行时,比列混乱,而不是像用户名进入分区键和类似的东西。它没有被导入到正确的列中。

如果使用 Azure 存储资源管理器将 .CSV 导入 Azure 表存储,则 .CSV 文件的数据结构应如下所示:

| PartitionKey | RowKey | Name  | UserName | Email           | Hash          | Salt   |
| ------------ | ------ | ----- | -------- | --------------- | ------------- | ------ |
| site         | site   | Janet | admin    | admin@gmail.com | 203weg0897wg  | 33&23j |

注意:PartitionKey需要放在第一列,RowKey需要放在后面。

我需要再导入大约 200 个表。但我需要知道哪个实体来自哪个表。我应该把它们放在不同的分区吗?我需要它们都放在一张桌子上。

根据您的要求,您可以将分区键设置为您的表名,并将行键设置为关联表中实体的标识。正如 Tamra 所说,对于 Azure 表中的每个实体,分区键和行键需要是唯一的。

为了将大约 200 个表导入到 azure 表中,您可以从 MYSQL 表中导出数据并修改 .CSV 文件中的数据结构,然后将 .CSV 逐个导入到 azure 表中。为了更好地理解 Azure 存储表的设计,你可以参考这个tutorial

此外,您可以使用 PowerShell scriptAzure Storage Client Library 作为您的开发语言将 CSV 文件导入 Azure 表存储。

【讨论】:

  • 谢谢你,但每个实体(我猜是一条记录)对每个表都有相同的分区键,这样好吗?所以 1 个表分区键中的所有用户都是表名。另外你对行键有什么建议吗?
  • PartitionKey 存储标识分区的值。分区对于表的可伸缩性是不可或缺的。具有相同 PartitionKey 值的实体存储在同一个分区中。为了充分利用 Azure 表,我建议您将导出的同一个表中的实体放在同一个分区中。更多详情,您可以参考这个tutorial。如果导出的实体没有任何唯一标识,您可以通过生成 GUID 字符串或其他方式自行创建。
  • 好吧,我就是这么想的。但是 Azure 存储资源管理器要求我放置一个 Rowkey 列,如果我确实放置了,我是否必须在其中放置任何值?还是 Azure 会自动为我分配随机值?谢谢你比 MSDN 论坛更有帮助
  • partitionkey 和 rowkey 列需要包含在 .CSV 文件中,然后才能将其导入 Azure Table。正如我所说,partitionkey 和 rowkey 构成 Azure 表中实体的主键。如果您从表中导出的实体无法自行识别,则您需要自行为其生成唯一标识。请注意,Azure 不会自动为您分配值。
  • 所以我打算这样做。我计划制作一个 Paritionkey 列并将表名放入其中。但是,我可以在 Rowkey 中放入任何随机字符串吗?
猜你喜欢
  • 2019-07-31
  • 2012-09-19
  • 1970-01-01
  • 2014-05-14
  • 2014-12-24
  • 2012-11-12
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
相关资源
最近更新 更多