从子文件夹获取JSON文件名并写入数据库filename列的方案咨询
可行实现方案
方案1:Power Automate 优化配置(适配你之前的工具流程)
解决你遇到的数组追加和循环嵌套问题,步骤如下:
- 初始化数组变量:创建一个名为
allJsonFiles的数组变量,用于存储所有找到的JSON文件信息 - 获取子文件夹列表:用
Get Metadata组件指向ParentFolder,勾选Child items元数据选项,拿到所有子文件夹 - 遍历子文件夹:添加
For each循环,遍历Get Metadata返回的子文件夹集合- 循环内获取当前子文件夹的文件列表:添加第二个
Get Metadata组件,路径设置为items('ForEach_SubFolder')?['Path'],同样勾选Child items - 筛选JSON文件:用
Filter Array组件,输入第二个Get Metadata的Child items,筛选条件设为endsWith(toLower(item()?['Name']), '.json')(兼容大小写后缀) - 追加到全局数组:用
Append to array variable组件,将筛选后的JSON文件数组追加到allJsonFiles - 读取JSON内容并写入数据库:在
Filter Array之后添加嵌套For each循环,遍历筛选后的JSON文件,用Get file content读取文件,Parse JSON解析出name和date字段,最后用Insert row或Execute SQL组件将filename(取item()?['Name'])、name、date写入数据库表
- 循环内获取当前子文件夹的文件列表:添加第二个
注:Power Automate支持循环嵌套,之前的问题大概率是路径配置错误(未正确指向当前子文件夹)或筛选逻辑遗漏,按上述步骤配置即可解决数组追加问题。
方案2:Python 脚本实现(灵活无工具限制)
如果允许用脚本,直接遍历文件夹并写入数据库,代码示例如下:
import os import json # 根据你的数据库类型替换驱动,比如pyodbc用于SQL Server,psycopg2用于PostgreSQL import sqlite3 # 配置参数 PARENT_FOLDER = "ParentFolder" DB_CONN_STR = "your_database.db" # 数据库连接字符串或路径 TABLE_NAME = "your_table_name" def main(): # 连接数据库 conn = sqlite3.connect(DB_CONN_STR) cursor = conn.cursor() # 遍历所有子文件夹及文件 for root, _, files in os.walk(PARENT_FOLDER): for file in files: # 筛选JSON文件(兼容大小写) if file.lower().endswith(".json"): file_path = os.path.join(root, file) # 读取并解析JSON内容 try: with open(file_path, "r", encoding="utf-8") as f: json_data = json.load(f) name = json_data.get("name") date = json_data.get("date") filename = file # 插入数据库 cursor.execute( f"INSERT INTO {TABLE_NAME} (name, date, filename) VALUES (?, ?, ?)", (name, date, filename) ) except Exception as e: print(f"处理文件 {file_path} 出错: {str(e)}") # 提交事务并关闭连接 conn.commit() conn.close() if __name__ == "__main__": main()
- 优势:无需依赖低代码工具的循环限制,可灵活处理异常、自定义筛选逻辑
- 适配:替换数据库驱动和连接字符串即可适配MySQL、SQL Server等不同数据库
方案3:SSIS 企业级ETL实现
适合数据仓库场景:
- 用Foreach Loop Container遍历
ParentFolder下的所有子文件夹 - 容器内部添加Foreach File Enumerator,设置文件筛选为
*.json(兼容大小写可通过脚本调整) - 用Script Task读取当前JSON文件,解析提取
name和date字段 - 用OLE DB Destination组件将
filename、name、date写入目标数据库表
内容的提问来源于stack exchange,提问作者Mary Queen Amora
相关产品推荐
相关产品推荐

