SQL Azure - 导入驻留在blob中的CSV文件

时间:2015-03-18 19:08:21

标签: azure azure-sql-database azure-storage azure-storage-blobs

我已经阅读了this这样的问题,但我的问题非常具体,因为#34; import" CSV而不是如何访问blob以获取CSV

哪种方式最好?

1)CSV存储在Blob中 - 使用辅助角色,从blob读取CSV,解析数据并更新数据库

2)SQL BulkCopy / BulkInsert是一个选项。这里的挑战是它不应该有任何内部部署参与。全部在Azure中:blob-> SQL DAtabase。

3)Azure自动化会有帮助吗?是否有PS脚本/工作流有助于将CSV数据批量更新到Azure SQL DB?我还没有发现任何

是否有其他选项可以帮助将blob CSV数据导入SQL DB而无需编写自定义代码?

欣赏任何想法......

4 个答案:

答案 0 :(得分:1)

你的第一种方法可行。您也可以使用azcopy(http://aka.ms/azcopy)在本地下载文件,然后使用BCP将其加载到SQL中 - 这样您就不必为此编写任何代码。

如果您想重复执行此操作,Azure自动化将会有所帮助。即使不存在脚本,您也应该能够将其设置为脚本。

答案 1 :(得分:1)

我知道这是一个过时的问题,但是对于任何寻求快速实现此目的的人,请随时阅读我的​​文章,了解如何使用由Logic App触发的SQL prodecure快速实现此目的。

简而言之,您是在master上运行的

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'UNIQUE_STRING_HERE'

然后您在数据库上运行

CREATE DATABASE SCOPED CREDENTIAL BlobCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=SAS_TOKEN_HERE';

CREATE EXTERNAL DATA SOURCE AzureBlob
WITH ( 
    TYPE       = BLOB_STORAGE,
    LOCATION   = 'https://<account_name>.blob.core.windows.net/<container_name>',
    CREDENTIAL = BlobCredential
);

然后

BULK INSERT <my_table>
FROM '<file_name>.csv'
WITH ( 
    DATA_SOURCE = 'AzureBlob',
    FORMAT      = 'CSV',
    FIRSTROW    = 2
);

只需将此插入内容包装在过程中,然后从逻辑应用中执行即可。

https://marczak.io/posts/azure-loading-csv-to-sql/

或仅在此处使用ADF

https://azure4everyone.com/posts/2019/07/data-factory-intro/

答案 2 :(得分:0)

对旧问题的回答很晚,但是......

如果您可以使用Azure SQL数据仓库,则可以利用http://mongoosejs.com/docs/api.html#query_Query-%24where直接查询存储在blob PolyBase中的CSV格式的数据。这将允许您直接将数据映射为外部表并动态查询。

https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-load-polybase-guide#export-data-to-azure-blob-storage

这样可以省去编写外部工具/解决方案以解压缩,解析数据并将数据上传到Azure SQL数据库的麻烦。不幸的是,PolyBase仅适用于Azure SQL数据仓库,而不适用于数据库,但您可以设置一些内容,将结构化数据从仓库读取到您的解决方案。

答案 3 :(得分:0)

我知道这个问题已经有两年了,但是对于那些刚才正在搜索这个主题的人来说,我想提一下SSIS的新Azure功能包使这在SSIS中变得简单。在VS Data Tools中,安装Azure Feature Pack后,您将打开一个空的SSIS项目,1)创建Azure存储连接管理器,然后2)添加数据流任务,然后打开数据流任务,3)添加Blob用于连接到CSV的源工具,然后4)使用Destination Assistant连接到数据所在的SQL表。然后,您可以在VS Data Tools IDE中以交互方式执行此操作,或将其发布到SQL Server实例并创建定期作业。