Azure Logic用于将数据从SQL获取到FTP

时间:2017-02-16 16:52:18

标签: azure azure-logic-apps

我的任务是从SQL获取数据并将数据作为CSV文件上传到FTP服务器。

现在我已经为一个SQL行做了这么好。 我遇到的问题是循环遍历所有行(foreach循环)并插入这些行作为CSV文件的内容。我在foreach中尝试了FTP创建文件任务循环,但我一次只能访问一行来设置文件的内容 - 我需要所有的行!

另外要记住的是,这些文件将有200k +行。

我当然可以为此编写一个C#控制台应用程序,但是我在不编写任何代码的情况下轻松实现这一点,这似乎是值得的。

2 个答案:

答案 0 :(得分:1)

我们最近为此场景添加了“Table”原语,设计器中的支持仍在进行中,但您可以在代码视图中使用它。

在下面的场景中,我从SQL Azure中的表中获取行,使用SQL查询(名字,姓氏)中的数据生成包含两列的CSV,然后通过电子邮件发送。

"Get_rows": {
    "inputs": {
        "host": {
            "api": {
                "runtimeUrl": "https://logic-apis-southcentralus.azure-apim.net/apim/sql"
            },
            "connection": {
                "name": "@parameters('$connections')['sql']['connectionId']"
            }
        },
        "method": "get",
        "path": "/datasets/default/tables/@{encodeURIComponent(encodeURIComponent('[SalesLT].[Customer]'))}/items",
        "queries": {
            "$top": 10
        }
    },
    "runAfter": {},
    "type": "ApiConnection"
},
"tableCsv0": {
    "inputs": {
        "columns": [
            {
                "header": "First Name",
                "value": "@item()?['FirstName']"
            },
            {
                "header": "Last Name",
                "value": "@item()?['LastName']"
            }
        ],
        "format": "csv",
        "from": "@body('Get_rows')?['value']"
    },
    "runAfter": {
        "Get_rows": [
            "Succeeded"
        ]
    },
    "type": "Table"
},
"Send_an_email": {
    "inputs": {
        "body": {
            "Body": "@body('tableCsv0')",
            "Subject": "Subject",
            "To": "deli@microsoft.com"
        },
        "host": {
            "api": {
                "runtimeUrl": "https://logic-apis-southcentralus.azure-apim.net/apim/office365"
            },
            "connection": {
                "name": "@parameters('$connections')['office365']['connectionId']"
            }
        },
        "method": "post",
        "path": "/Mail"
    },
    "runAfter": {
        "tableCsv0": [
            "Succeeded"
        ]
    },
    "type": "ApiConnection"
}

答案 1 :(得分:0)

接下来就是为了说明Derek的回答如何帮助我解决问题,以便在FTP服务器上获取大量行。我最终使用了执行存储过程操作的输出主体,因为GetRows操作限制为512行。

注意:由于设计器中没有Table操作,但是,在代码查看器中执行所有操作,打开设计器会导致问题,并在某一时刻删除所有代码。

var highlightLayer;
    function highlightFeature(e) {highlightLayer = e.target;
     if (e.target.feature.geometry.type === 'LineString') {highlightLayer.setStyle({clickable: false});
    }else...