You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从子文件夹获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:51:21