Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure sql database 从本地将定期CSV文件加载到Azure db_Azure Sql Database_Azure Storage Blobs_Azure Data Lake - Fatal编程技术网

Azure sql database 从本地将定期CSV文件加载到Azure db

Azure sql database 从本地将定期CSV文件加载到Azure db,azure-sql-database,azure-storage-blobs,azure-data-lake,Azure Sql Database,Azure Storage Blobs,Azure Data Lake,我们正在构建一个快速应用程序/quick win解决方案,它需要将每月的CSV文件从本地存储(即)文件加载到Azure blob/SQL表中。共有4个文件,每个文件有50000行,文件名中附有月份名称 将这些文件传输到blob或存储器中,同时确保我们能够以某种方式从文件中检索月份名称的最广为人知的方法是什么?本地文件夹中的旧文件将被忽略,而只加载新文件 在过去,我们可以使用SSI轻松支持这种行为,但我正在寻找基于云的解决方案,如Data Factory 我已经尝试过在内部部署Azure Blob

我们正在构建一个快速应用程序/quick win解决方案,它需要将每月的CSV文件从本地存储(即)文件加载到Azure blob/SQL表中。共有4个文件,每个文件有50000行,文件名中附有月份名称

将这些文件传输到blob或存储器中,同时确保我们能够以某种方式从文件中检索月份名称的最广为人知的方法是什么?本地文件夹中的旧文件将被忽略,而只加载新文件

在过去,我们可以使用SSI轻松支持这种行为,但我正在寻找基于云的解决方案,如Data Factory

我已经尝试过在内部部署Azure Blob,但我无法避免传输旧文件,也无法检索文件名(尽管我可能使用插入/修改日期)

有什么建议吗?想法


谢谢,

您可以使用任何上传到存储Blob或Azure Data Lake Store(可能与ADF协调)并保留文件名结构

然后,您可以使用Azure Data Lake Analytics和U-SQL,使用
EXTRACT
OUTPUT
语句将文件烹调成CSV文件,在这些语句中,您使用所谓的文件集语法将文件/文件夹名透视到行集中,并使用谓词限制要处理的文件范围。该U-SQL作业可以再次通过ADF进行编排和参数化。然后最后使用ADF将生成的文件移动到SQL Azure,或者如果使用SQL DW,则可以在生成的CSV上使用Polybase

以下是伪U-SQL脚本的一个简单示例:

DECLARE EXTERNAL @begin_date = DateTime.Parse("2017-06-01");
DECLARE EXTERNAL @end_date = DateTime.Parse("2017-06-08");

@data = EXTRACT col1 int, col2 string, date DateTime
        FROM "/path/file_{date:yyyy}_{date:MM}_{date:dd}.csv"
        USING Extractors.Csv();

@data = SELECT * FROM @data WHERE date BETWEEN @begin_date AND @end_date;

OUTPUT @data TO "/output/cookeddata.csv" USING Outputters.Csv();

几周前我也有同样的需求,我决定寻找一个使用Azure函数和本机Azure SQL批量功能的解决方案

只要将文件复制到Blob存储区(),即可触发Azure函数。您可以访问所有文件属性,从而也可以访问文件名

Azure函数随后将只调用Azure SQL中的一个过程,传递检测到的CSV文件名,以便它可以与所有需要的属性一起批量导入到您选择的表中

此处提供完整的代码示例和详细说明:


数据工厂几乎肯定是实现这一点的工具。它有日期和时间功能,例如帮助。是否有一个逐步的指南来实现这一点?以上几乎是一步一步的大纲:)。您可以在Azure Data Lake、ADF和SQL数据仓库文档页面上找到白皮书和演示,它们可以向您展示我上面概述的各个步骤。我会把一个端到端的经验描述我的文件积压。谢谢。我想我现在基本上理解了解决方案,本周可能会继续工作。尽管如此,我仍然不清楚如何通过ADF编排和参数化U-SQL作业?在ADF中,我在哪里可以链接到USQL作业?以下是一些文档: