十万行CSV如何顺利导进数据库:DBeaver数据导入实战指南
十万行CSV如何顺利导进数据库DBeaver数据导入实战指南【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver把客户表从CSV导进数据库中文一半变乱码、剩下的行还报主键冲突这种场面你遇到过吗DBeaver数据导入是这款通用数据库工具的核心功能之一搞懂它的错误收集机制和列映射流程大部分导入报错都能提前避开。一个真实场景20万行中文流水CSV导入失败业务同事丢来一份20万行的门店流水CSV里面带中文商户名分隔符是分号从欧洲系统导出的。我直接用了默认设置导入前300行全部失败中文变问号1,234.56这种金额塞不进数值字段日志一直指向同一行号。后来排查发现问题不在数据而在于编码、分隔符和日期格式我都没配。DBeaver数据导入的工作机制两个模块管一条流水线先说结论DBeaver的导入不是一个大函数而是“读”和“写”拼起来的一条流水线。数据传输模块 plugins/org.jkiss.dbeaver.data.transfer/ 负责主流程把文件逐行拆成行记录把每一列转换为目标表的类型再批量写入数据库。你界面上看到的导入向导则由 plugins/org.jkiss.dbeaver.data.transfer.ui/ 提供作用是把你的选项翻译成流水线能执行的任务参数。这里有个值得注意的设计错误不会当场中断而是先被收进任务状态里跑完才能看到哪一行、哪一列出了问题。所以DBeaver导入经常“成功一半”成功的一半照常落库失败的那些行留给你回头处理。DBeaver CSV导入的四个步骤这四步的目标只有一个让报错在正式导入前暴露出来把全量数据的失败率压到接近零。步骤1数据体检先确认编码、分隔符和样例行目标确认文件本身可读、格式稳定。操作用文本编辑器打开CSV确认文件编码是UTF-8还是GBK看前5行确认分隔符是逗号、分号还是制表符第一行是不是表头扫一遍三种隐患空值、带千分位的数字、全角字符验证结果编辑器里前5行显示正常且全文件分隔符一致。步骤2列映射把列对对、把格式配上目标保证源列类型和目标列兼容。操作在导入向导的源步骤选上一步确认过的编码和分隔符映射步骤里逐列对应源列到目标列遇到类型不匹配比如字符串转数字时按提示手动指定转换或目标类型日期列填入源数据真实使用的格式源和目标都尽量用YYYY-MM-DDCSV的解析规则集中在 DataImporterCSV.java想弄清某个值为什么解析成这样可以从这里看起验证结果预览映射后中文、金额、日期都能按目标表的样子正确显示。步骤3小批量试跑先让100行走完全流程目标用最小成本暴露格式和约束问题。操作只取前100行或另存一份100行的样例文件指向一张测试表别对着生产表执行导入跑完查看执行报告验证结果100行全部成功或失败行能明确定位到行号和列名。步骤4正式导入让报错落到报告里跑完抽样核对目标完成导入并拿到一份明确的失败清单。操作恢复全量行数大数据量时启用批量提交降低内存和事务压力遇到主键重复时选择策略跳过、覆盖或删除后插入跑完后逐条看错误报告失败行号会记录在任务状态里记录逻辑可参考 DataTransferState.java按报告修正源数据只重导失败的行验证结果导入行数与源文件行数对得上随机抽5行核对数值一致。 错误报告不是摆设排查问题先看报告别靠猜。DBeaver导入失败速查表⚠️ 下表基本每条都有人踩过对号入座再动手排查。现象可能原因处理动作中文变问号或方框文件编码和导入设置不一致源步骤手动选GBK或UTF-8后重新预览金额列导入失败数字带千分位或全角字符清洗源数据或在列映射里配置转换日期值变0或报错源日期格式与字段不符按源格式如实填写或先统一成YYYY-MM-DD主键冲突中断目标表已存在相同主键选择跳过、覆盖或删除后插入策略中途报约束违规子表先于父表导入或引用行缺失调整顺序先导入父表再导子表个别行失败报告指向同一行某个单元格里藏了换行符用编辑器打开文件开启显示全部字符定位修复三条过来人的提醒别拿默认设置打天下改在导入前核对编码、分隔符、日期格式三项欧洲和美国的CSV常用不同分隔符默认逗号不一定对。别直接上20万行改先用100行试跑一次试跑省下的时间远大于等待的时间。别看到日期列没报错就放心要导入后抽几行和源数据比对格式不匹配最危险的是静默写错。DBeaver数据导入本质是“体检、映射、试跑、批量、验证”五件事流程做对多数错误到不了数据库。现在就挑一份小CSV把步骤3的100行试跑走一遍。【免费下载链接】dbeaverFree universal database tool and SQL client项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
