我的任务是从SQL获取数据并将数据作为CSV文件上传到FTP服务器。
现在我已经为一个SQL行做了这么好。 我遇到的问题是循环遍历所有行(foreach循环)并插入这些行作为CSV文件的内容。我在foreach中尝试了FTP创建文件任务循环,但我一次只能访问一行来设置文件的内容 - 我需要所有的行!
另外要记住的是,这些文件将有200k +行。
我当然可以为此编写一个C#控制台应用程序,但是我在不编写任何代码的情况下轻松实现这一点,这似乎是值得的。
答案 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...