假设我有3个表Table1、Table2、Table3。我希望这些表以CSV文件的形式存储在Azure数据湖存储中。我已经完成了这一操作,但它们都在一个文件夹中。如何将它们复制到3个不同的文件夹中,如Table1、Table2、Table3
icnyk63a1#
如何将它们复制到3个不同的文件夹中,如Table1、Table2、Table3使用以下方法来实现您的要求。创建SQL数据库和ADLS的数据集,如下所示。
SQL数据库数据集:
{ "name": "AzureSqlTable1", "properties": { "linkedServiceName": { "referenceName": "AzureSqlDatabase1", "type": "LinkedServiceReference" }, "parameters": { "table_name": { "type": "string" } }, "annotations": [], "type": "AzureSqlTable", "schema": [], "typeProperties": { "schema": "dbo", "table": { "value": "@dataset().table_name", "type": "Expression" } } } }
参数为的ADLS数据集
{ "name": "target_csv_files", "properties": { "linkedServiceName": { "referenceName": "AzureDataLakeStorage1", "type": "LinkedServiceReference" }, "parameters": { "folder_name": { "type": "string" }, "table_name": { "type": "string" } }, "annotations": [], "type": "DelimitedText", "typeProperties": { "location": { "type": "AzureBlobFSLocation", "fileName": { "value": "@dataset().table_name", "type": "Expression" }, "folderPath": { "value": "@dataset().folder_name", "type": "Expression" }, "fileSystem": "data" }, "columnDelimiter": ",", "escapeChar": "\\", "firstRowAsHeader": true, "quoteChar": "\"" }, "schema": [] } }
然后使用SELECT name FROM sys.Tables;脚本创建查找活动以获取表列表。
SELECT name FROM sys.Tables;
查找将给予如下输出:
将此数组赋给ForEach,并在ForEach中使用复制活动。如下所示,将动态内容@item().name和@concat(item().name,'.csv')赋给复制活动的源和接收器。
@item().name
@concat(item().name,'.csv')
资料来源:
Flume:
结果:
1条答案
按热度按时间icnyk63a1#
如何将它们复制到3个不同的文件夹中,如Table1、Table2、Table3
使用以下方法来实现您的要求。
创建SQL数据库和ADLS的数据集,如下所示。
SQL数据库数据集:
参数为的ADLS数据集
然后使用
SELECT name FROM sys.Tables;
脚本创建查找活动以获取表列表。查找将给予如下输出:
将此数组赋给ForEach,并在ForEach中使用复制活动。如下所示,将动态内容
@item().name
和@concat(item().name,'.csv')
赋给复制活动的源和接收器。资料来源:
Flume:
结果: