4

データをエクスポートする機能を探していますSQL アズールAzure Table Storage を一部のフラット ファイルまたは XML ファイルに変換して、それを SQL / MYSQL Server にインポートしてデータ分析を実行できるようにします。

Azure テーブル ストレージはカウントと合計をサポートしていないため、テキスト APIから 1 時間ごとに大量のトランザクションが発生します (パーティション戦略は 1 時間ごと)。したがって、データ分析の目的で、データをフラット ファイルにエクスポートし、SQL Server/MySQL にインポートして分析したいと考えています。

質問:

  1. Azure テーブル ストレージからフラット ファイルにデータをエクスポートする方法のユーティリティまたはチュートリアルはありますか? パーティションごとに分割し、高速にしますか? サンプル コードまたはユーティリティはありますか? 実証済みの例/チュートリアルはありますか?

  2. MS SQL と Azure テーブル、1 時間ごとにデータを自動的に抽出して SQL サーバーにロードできるツールまたはユーティリティはありますか? マイクロソフトのロードマップにそのような製品またはエクスポート ツールはありますか?

どんなサポートでも大歓迎です。

4

4 に答える 4

8

Azure Storage Explorerを使用できます。これは無料で、Microsoft によってサポートされています。適切なストレージ アカウントを参照し、エクスポートするテーブル ストレージをクリックして、エクスプローラーでエクスポート オプションを探します。 テーブル ストレージのエクスポート

于 2020-07-22T07:09:22.277 に答える
5

Azure テーブル ストレージからフラット ファイルにデータをエクスポートするツールをお探しの場合は、Cerebrata のAzure Management Studio (商用、無料ではありません) またはClumsyLeaf の TableXplorer (商用、無料ではありません) をご覧になることをお勧めします。これらのツールは両方とも、データを CSV および XML ファイル形式にエクスポートする機能を備えています。

どちらのツールも GUI ベースであるため、エクスポート プロセスを自動化できるとは思いません。自動化については、データを CSV または XML 形式にエクスポートするための PowerShell ベースのインターフェイスを提供する Cerebrata の Azure Management Cmdlets を調べることをお勧めします。

過去にセレブラータと付き合っていたので、その話しかできません。このツールはパーティションごとにエクスポートしませんが、テーブル内のすべての PartitionKey 値がわかっている場合は、パーティションごとにデータをエクスポートするクエリを指定できます。

自動化が重要な要件の 1 つである場合は、1 時間に 1 回実行され、過去 1 時間のデータを抽出するコンソール アプリケーションを簡単に作成できます。.Net Storage Client ライブラリを使用してデータを取得できます。そのためには、まずTableEntityクラスから派生するクラスを定義します。以下のようなもの:

public class CustomEntity : TableEntity
{
    public string Attribute1
    {
        get;
        set;
    }

    public string Attribute2
    {
        get;
        set;
    }

    public string AttributeN
    {
        get;
        set;
    }

    public static string GetHeaders(string delimiter)
    {
        return "\"Attribute1\"" + delimiter + "\"Attribute2\"" + delimiter + "\"AttributeN\"";
    }

    public string ToDelimited(string delimiter)
    {
        return "\"" + Attribute1 + "\"" + delimiter + "\"" + Attribute2 + "\"" + delimiter + "\"" + AttributeN + "\"";
    }
}

その後、アプリケーションはテーブル ストレージを 1 時間ごとにクエリし、データをファイルに保存できます。

    DateTime currentDateTime = DateTime.UtcNow;
    //Assuming the PartitionKey follows the following strategy for naming: YYYYMMDDHH0000
    var fromPartitionKey = currentDateTime.AddHours(-1).ToString("YYYYmmDDHH0000");
    var toPartitionKey = currentDateTime.ToString("YYYYmmDDHH0000");
    var filterExpression = string.Format("PartitionKey ge '{0}' and PartitionKey lt '{1}'", fromPartitionKey, toPartitionKey);
    var tableName = "<your table name>";
    var cloudStorageAccount = new CloudStorageAccount(new StorageCredentials("<account name>", "<account key>"), true);
    var cloudTableClient = cloudStorageAccount.CreateCloudTableClient();
    var table = cloudTableClient.GetTableReference(tableName);
    TableQuery<CustomEntity> query = new TableQuery<CustomEntity>()
    {
        FilterString = filterExpression,
    };

    var entities = table.ExecuteQuery<CustomEntity>(query).ToList();
    if (entities.Count > 0)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append(CustomEntity.GetHeaders(",") + "\n");
        foreach (var entity in entities)
        {
            sb.Append(entity.ToDelimited(",") + "\n");
        }
        var fileContents = sb.ToString();
        //Now write this string to a file.
    }

このデータをリレーショナル データベースにインポートする限り、周りを見渡せば、それを実行できるユーティリティがたくさん見つかるはずです。

于 2013-06-09T14:44:12.330 に答える
2

このスレッドを新しい Azure 機能で更新するために、Microsoft が管理する無料の azcopy を使用して、Azure テーブル ストレージを Blob ストレージのフラット ファイルにエクスポートできるようになりました: https://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy /#copy-entities-in-an-azure-table-with-azcopy

于 2015-12-11T12:16:12.400 に答える
1

Enzo クラウド バックアップ ( http://bluesyntax.net/backup20.aspx ) をお試しください。Azure テーブルを SQL データベース (SQL Server または SQL Azure) に直接エクスポートする機能を提供します。ストアド プロシージャを呼び出して、その場でデータを変換することもできます。また、クラウド エージェントまたは付属の .NET API を使用して、これをスケジュールに入れることもできます。無料の Community Edition が付属する商用製品ですが、この特定の機能には Advanced Edition が必要です。

于 2013-06-09T22:34:50.113 に答える