4

これは不可能だと思いますが、質問をしても、何かを見落としている可能性があります。

Azure テーブルから列を追加/削除できますか?

たとえば、デフォルトでは次の列を取得します: PartitionKey、RowKey、Timestamp、ETag。たとえば、FirstName、LastName、Email の 3 つの列を追加できますか?

その後、いくつかの値を挿入し、Email 列を削除して、代わりに Address 列を追加します。これはできますか?

4

3 に答える 3

7

Igor が正しく言ったように、Azure テーブルには行と列の概念がありません。テーブルには 0 個以上のエンティティを含めることができ、各エンティティには最大 255 個の属性を含めることができます (属性は名前/値/タイプです)。これらの 255 の属性のうち、そのうちの 3 つはシステム属性 (PartitionKey、RowKey、および Timestamp) であり、コードを使用して更新することはできません。エンティティを作成するときに、PartitionKey と RowKey を定義すると、その後は読み取り専用プロパティになります。したがって、エンティティの更新に関しては、252 の属性しか更新できません。

Azure テーブルでデータを管理するには、REST API があり、要求本文でエンティティの属性を指定します。UpdateAzure Storage には、エンティティを更新するための 2 つの方法 ( と ) が用意されていますMerge

エンティティにAzure Table Service を伝えるとUpdate、そのエンティティの既存の属性がすべて削除され、要求ペイロードで定義された属性が挿入されます。

エンティティにAzure Table Service を伝えるMergeと、既存のエンティティ属性が調べられ、要求ペイロードで定義された属性と比較されます。一致する属性が見つかった場合は、それらの属性を更新するだけです。属性が既存のエンティティに存在しないが、要求ペイロードで定義されている場合、それらの属性はエンティティに追加されます。属性が既存のエンティティに存在するが、要求ペイロードで定義されていない場合、属性は変更されません。

今あなたの問題に来ています。

PartitionKeyしたがって、先ほど定義したエンティティと を既に持っているとしましょうRowKeyFirstNameここでLastName、、、属性を追加しEmailます。これらの属性はエンティティに存在しないため、エンティティを使用MergeまたはReplace更新すると、これらの属性がエンティティに追加されます。

ここEmailで、エンティティから属性を削除し、代わりにそのエンティティに属性を追加Addressします。あなたがすることはUpdate、あなたのリクエストボディが持つエンティティに対して操作をFirstName実行LastNameすることです。Address属性のみ(Email属性なし)。このリクエスト ペイロードでエンティティを更新すると、エンティティEmailから属性が削除されます。

于 2016-02-29T03:19:16.923 に答える
5

Azure テーブルには、SQL テーブルのような「列」がありません。Azure テーブルにはエンティティがあります。各エンティティには、最大 255 のプロパティがあります。Azure テーブルを表示できるほとんどのツールは、列を使用して表形式でデータを視覚化することを選択します。ただし、実際には、各エンティティ (行) はプロパティのコレクションです。

したがって、保存を行うたびに、オブジェクト/エンティティをさまざまなプロパティで Azure テーブルに保存できます。それは物事をやや混乱させますが、あなたはそれを行うことができます.

HTH

于 2016-02-29T01:40:23.657 に答える