将表从azure SQL数据库迁移到Azure数据湖

时间:2016-10-21 09:51:31

标签: azure ssis azure-data-lake

我想将所有表从azure SQL数据库完全迁移到azure数据湖。我怎样才能做到这一点。 请给出一些场景,以便我可以完全移动到azure数据湖。 提前谢谢。

我也可以通过SSIS做到这一点吗?

4 个答案:

答案 0 :(得分:2)

如果您不想安排它,并且有兴趣在Azure Data Lake Store中移动所有表,那么您可以直接从U-SQL查询表并通过ADL Store中的U-SQL输出器输出它。

以下是一个教程:http://eatcodelive.com/2015/11/21/querying-azure-sql-database-from-an-azure-data-lake-analytics-u-sql-script/

答案 1 :(得分:1)

看看Azure Data Factory。它就像Azure中的SSIS一样。见https://azure.microsoft.com/en-us/documentation/articles/data-factory-introduction/

有关将数据移至Azure Data Lake的教程,请参阅https://azure.microsoft.com/en-us/documentation/articles/data-factory-azure-datalake-connector/

答案 2 :(得分:1)

除了使用Azure Data Factory和U-SQL之外,您还可以使用在HDI群集上运行的sqoop - https://azure.microsoft.com/en-gb/documentation/articles/data-lake-store-data-transfer-sql-sqoop/

您现在无法使用SSIS。我们正在努力实现这种支持。当我们启用它时,我们将更新此线程并发布适当的文档。

谢谢, 萨钦谢思 Azure Data Lake项目经理

答案 3 :(得分:0)

您有许多选项,如此处的答案数量所示,但这取决于您希望数据最终的格式以及您希望执行的工作负载类型。您当前的数据位于数据库中,意味着高度结构化强大的数据类型,以及索引关系< / strong>即可。如果你转移到另一种格式,你会丢失部分或大部分格式,因此决定你最终会采用哪种格式?例如数据库表,平面文件,外部表,U-SQL表。 U-SQL(IMHO)最适合于您希望将关系数据与非关系数据或流程非关系数据混合的分析工作负载,即基本上使用c#表达式执行普通T-SQL无法做到的事情或定制输出器,处理器等。

让我们通过以下方式开展其中一些方法:

  1. 将数据保留在Azure数据库中,并使用Azure Data Lake Analytics(ADLA)和U-SQL的功能“查询其所在的数据”。您甚至可以使用联合表(也称为外部表)或创建视图。
  2. 优点:数据不会从原始数据库中移出,而是可以使用U-SQL与湖中的其他数据连接。

    缺点:必须编写附加代码

    DROP VIEW IF EXISTS dbo.viewOnAzureDB;
    
    CREATE VIEW dbo.viewOnAzureDB
    AS
    SELECT col1,
           col2,
           col3,
           col4
    FROM EXTERNAL yourExternalDataSource LOCATION "dbo.yourTable";
    
    1. 使用Azure数据工厂将数据从Azure数据库中的本机表格式移动到Data Lake中的平面文件格式。
    2. 优点:直接使用复制向导将数据从Azure DB复制到湖中的平面文件。 缺点:您将失去从数据库表中获得的强大的数据输入,索引和关系。

      1. U-SQL表 使用U-SQL在Azure Data Lake中创建内部表。
      2. 优点: U-SQL表可以编入索引并进行分区,并具有强大的数据类型。

        缺点:必须编写其他代码,无需编写关系

        // U-SQL CTAS
        CREATE TABLE dbo.CTASOnAzureDBTable
        (
            INDEX cdx_CTASOnAzureDBTable
            CLUSTERED(col1)
            DISTRIBUTED BY
            ROUND ROBIN
        )
        AS
        SELECT *
        FROM dbo.viewOnAzureDB;
        
        // U-SQL table
        CREATE TABLE IF NOT EXISTS dbo.CTASOnAzureDBTable2
        (
            col1 int,
            col2 DateTime?, // ? means nullable,
            col3 string,
            col4 bool,
        
            INDEX cdx_CTASOnAzureDBTable2
            CLUSTERED(col1)
            DISTRIBUTED BY
            ROUND ROBIN
        );
        

        我希望这可以帮助您通过部分选项进行思考,并且可能会考虑您为什么要迁移到数据湖以及您想要的内容。