我必须将各种zip文件从ftp服务器导入到某些Azure SQL表中。每个zip文件最多包含10个具有不同结构的文本(csv)文件,即第一个文本文件中的行的格式为
" 1 |星期一| 2017年3月20日| 345671"
而第二个文本文件中的行的格式为,例如
" ABC | 345894 | XYZ || 2 | YYY |真| 3"
我不想使用MapReduce(或自定义活动),因为它昂贵且速度慢(Microsoft Azure支持建议使用HDInsight(按需)MapReduce活动来首先解压缩文件)。
答案 0 :(得分:1)
为我定义必要的链接服务,为FTP链接服务,然后使用FileShare类型的数据集从源(FTP服务器)获取文件。在此数据集中,断言文件已压缩:
{
"name": "myFTPFileInput",
"properties": {
"published": false,
"type": "FileShare",
"linkedServiceName": "myFTPLinkedService",
"typeProperties": {
"fileName": "xyz20170316.zip",
"useBinaryTransfer": "true",
"folderPath": "/Products/xyzProducts",
"compression": {
"type": "ZipDeflate",
"level": "Optimal"
}
},
"availability": {
"frequency": "Day",
"interval": 15
},
"external": true,
"policy": {}
}
}
使用Blobsink将文件写入blob存储:
{
"name": "myAzureBlobOutput",
"properties": {
"published": false,
"type": "AzureBlob",
"linkedServiceName": "myAzureStorageLinkedService",
"typeProperties": {
"folderPath": "mytest/ftp/xyz/{Year}/{Month}",
"format": {
"type": "TextFormat",
"rowDelimiter": "\n",
"columnDelimiter": "|"
},
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "MM"
}
}
]
},
"availability": {
"frequency": "Day",
"interval": 15
}
}
}
数据将被解压缩并作为文本写入指定的文件夹。从那里,我可以使用标准的ADF复制活动将每个文件导入相应的Azure SQL表。
希望这有帮助