n8n-nodes-database-importer
v1.0.9
Published
An n8n node to import data from Kingsoft WPS output to MySQL database with field mapping and deduplication
Downloads
905
Maintainers
Readme
n8n Database Importer Node
一个用于将Kingsoft WPS工作流节点输出的数据导入到MySQL数据库的n8n自定义节点。
功能特性
1. 数据库连接配置
- Host: MySQL服务器地址
- Port: MySQL端口 (默认: 3306)
- Database: 数据库名称
- User: 数据库用户名
- Password: 数据库密码
- Connect Timeout: 连接超时时间 (毫秒,默认: 10000)
- Connection Pool Limit: 连接池最大连接数 (默认: 10)
2. 导入模式
全量导入 (Full Import)
- 先清空目标表(可选)
- 将所有数据导入目标表
- 适用于完全替换表数据的场景
增量导入 (Incremental Import)
- 根据唯一键组合进行去重过滤
- 只导入不存在的新数据
- 支持单个或多个字段组成的唯一键
- 适用于追加新数据的场景
3. 分批导入
- 支持自定义批次大小
- 默认每批处理 5000 条记录
- 范围: 100-10000 条/批
- 提高大数据量导入的性能和稳定性
4. 字段映射
- 支持源字段到目标字段的灵活映射
- 可添加多个字段映射
- 源字段名: Kingsoft节点输出的字段名
- 目标字段名: 数据库表中的字段名
5. 导入数量验证
- 自动验证导入数量是否一致
- 比对源数据行数与实际导入行数
- 提供详细的导入统计信息
安装
方式1: 从npm安装 (发布后)
npm install n8n-nodes-database-importer方式2: 手动安装
- 克隆或下载此项目
- 在项目目录下运行:
npm install
npm run build- 将生成的
dist目录链接到n8n的自定义节点目录
方式3: 在n8n中直接安装
- 打开n8n设置
- 进入 "Community Nodes"
- 搜索 "n8n-nodes-database-importer"
- 点击安装
使用说明
1. 配置数据库凭据
- 在n8n中创建新的凭据
- 选择 "MySQL Database"
- 填写数据库连接信息:
- Host: 数据库服务器地址
- Port: 端口号 (默认3306)
- Database: 数据库名
- User: 用户名
- Password: 密码
- Connect Timeout: 连接超时时间(可选)
- Connection Pool Limit: 连接池大小(可选)
2. 添加Database Importer节点
- 在工作流中添加 "Database Importer" 节点
- 连接到Kingsoft节点输出
- 选择已配置的MySQL凭据
3. 配置导入参数
基础配置
- Import Mode: 选择导入模式 (Full/Incremental)
- Target Table: 目标数据库表名
- Batch Size: 批次大小 (默认5000)
字段映射
点击 "Add Field Mapping" 添加字段映射:
- Source Field: Kingsoft输出的字段名 (如: "快手ID")
- Target Field: 数据库表字段名 (如: "kuaishou_id")
示例:
Source Field: 快手ID → Target Field: kuaishou_id
Source Field: 快手昵称 → Target Field: nickname
Source Field: 集团号 → Target Field: group_number
Source Field: 所属端口 → Target Field: port增量导入配置
如果选择增量导入模式:
- Unique Key Fields: 填写唯一键字段 (多个字段用逗号分隔)
- 示例:
kuaishou_id(单字段) - 示例:
kuaishou_id,nickname(多字段组合)
- 示例:
高级选项
- Truncate Table Before Import: 全量导入前是否清空表 (默认: true)
- Continue on Error: 遇到错误是否继续处理 (默认: false)
- Verify Import Count: 是否验证导入数量 (默认: true)
4. 运行工作流
执行工作流后,节点将输出导入结果:
{
"success": true,
"totalRows": 9070,
"importedRows": 9070,
"duplicateRows": 0,
"failedRows": 0,
"message": "Successfully imported 9070 rows (0 duplicates, 0 failed)"
}工作流示例
示例1: 全量导入
Kingsoft节点 → Database Importer节点配置:
- Import Mode: Full Import
- Target Table: kuaishou_accounts
- Truncate Table: Yes
- Field Mappings:
- 快手ID → kuaishou_id
- 快手昵称 → nickname
- 集团号 → group_number
示例2: 增量导入
Kingsoft节点 → Database Importer节点配置:
- Import Mode: Incremental Import
- Target Table: kuaishou_accounts
- Unique Key Fields: kuaishou_id
- Field Mappings:
- 快手ID → kuaishou_id
- 快手昵称 → nickname
- 开户日期 → account_date
输入数据格式
节点接受Kingsoft节点的输出格式:
[
{
"data": {
"result": [
["快手ID", "快手昵称", "集团号", "所属端口"],
[1469773427, "问美美妆", "", "上海亦盟"],
[2426532761, "黄皮肤旗舰店", "", "上海亦盟"]
]
},
"status": "finished"
}
]第一行为表头(字段名),后续行为数据行。
输出数据格式
节点输出导入结果统计:
{
"success": true,
"totalRows": 100,
"importedRows": 95,
"duplicateRows": 5,
"failedRows": 0,
"message": "Successfully imported 95 rows (5 duplicates, 0 failed)"
}字段说明:
success: 导入是否成功totalRows: 源数据总行数importedRows: 成功导入的行数duplicateRows: 重复跳过的行数 (增量导入)failedRows: 失败的行数message: 导入结果消息
注意事项
- 数据库权限: 确保数据库用户有目标表的INSERT、SELECT、TRUNCATE权限
- 字段类型: 确保源数据类型与目标字段类型兼容
- 唯一键: 增量导入时,确保目标表上有对应的唯一索引或主键
- 批次大小: 根据数据量和服务器性能调整批次大小
- 事务处理: 每批数据在事务中处理,失败会自动回滚
- 性能优化: 大数据量导入建议使用较大的批次大小(如5000-10000)
故障排查
问题1: 连接超时
- 检查数据库服务器是否可访问
- 增加 Connect Timeout 值
- 检查防火墙设置
问题2: 导入失败
- 检查字段映射是否正确
- 检查数据类型是否匹配
- 查看错误日志获取详细信息
- 启用 "Continue on Error" 继续处理其他批次
问题3: 重复数据未去重
- 确保目标表有唯一索引
- 检查 Unique Key Fields 配置是否正确
- 验证字段映射中包含了唯一键字段
问题4: 性能慢
- 增加批次大小
- 增加连接池大小
- 检查数据库索引配置
- 考虑在非高峰期执行
开发
构建
npm run build开发模式(监听文件变化)
npm run dev代码格式化
npm run format代码检查
npm run lint
npm run lintfix # 自动修复技术栈
- TypeScript
- n8n-workflow
- n8n-core
- mysql2 (Promise API)
许可证
MIT
支持
如有问题或建议,请提交Issue或Pull Request。
更新日志
v1.0.0 (2024-11-19)
- 初始版本发布
- 支持全量/增量导入
- 支持字段映射
- 支持分批导入
- 支持导入数量验证
- 支持连接池配置
