如何在Power Flow中为含多逗号的CSV列添加双引号适配ADF与SQL
解决CSV文本列含逗号导致SQL列拆分的Power Flow处理方案
以下是在Power Flow中自动为指定文本列(如string_value)添加双引号的具体步骤,确保ADF导入SQL时将带引号的字段识别为整体:
1. 解析CSV内容为行数组
- 获取SharePoint上的CSV文件内容后,添加Compose动作,用换行符拆分内容为行数组:
split(body('Get_file_content'), decodeUriComponent('%0A')) - 再添加一个Compose动作提取表头行,用于定位目标列:
first(outputs('Split_CSV_into_rows'))
2. 确定目标列的索引位置
- 添加Compose动作,通过表头拆分和索引查找,得到
string_value列的索引(从0开始计数):indexOf(split(outputs('Extract_header_row'), ','), 'string_value')
3. 遍历每行修改目标列
- 添加Apply to each循环,选择之前拆分的行数组作为循环对象。
- 循环内按以下步骤处理每行:
- 拆分当前行为列数组:
split(items('Apply_to_each'), ',') - (可选)如果目标列已有双引号,先转义避免格式错误:
replace(outputs('Split_current_row')[outputs('Get_target_column_index')], '"', '""') - 给目标列值包裹双引号:
concat('"', outputs('Escaped_target_value'), '"') - 替换原列数组中的目标值,再拼接为完整行:
join(replace(outputs('Split_current_row'), outputs('Split_current_row')[outputs('Get_target_column_index')], outputs('Wrapped_target_value')), ',')
- 拆分当前行为列数组:
4. 生成并上传处理后的CSV
- 循环结束后,添加Compose动作拼接所有处理后的行:
join(body('Apply_to_each'), decodeUriComponent('%0A')) - 用Create file动作将新的CSV内容上传到SharePoint目标文件夹(可选择覆盖原文件或生成新文件)。
注意事项
- 处理空行:可在循环前添加过滤步骤移除空行,避免异常:
filter(outputs('Split_CSV_into_rows'), not(equals(item(), ''))) - 表头处理:如果不需要给表头列加引号,可在循环内添加条件判断,跳过表头行的修改逻辑。
内容的提问来源于stack exchange,提问作者Parth Z
相关产品推荐
相关产品推荐

