Excel如何导入数据库

坦白说,将数据库导入Excel的问题在格式和数量上都很复杂,但只要掌握要点就可以解决。

扩展一下,我们先来说说最重要的数据预处理。
去年我们运行这个项目的时候,实时导入了3 000行数据,结果就爆炸了。
后来我们发现Excel中有隐藏的合并单元格没有处理。
用行话来说,这称为雪崩效应。
事实上,前面的一个小延迟就能让一切恢复正常。
还有一点就是工具的选择。
对于标准格式,只需使用 Navicat 进行拖放即可。
然而,去年我们接手了一个使用Kettle的旧项目。
对于非标准格式,需要手动加载数据转换节点。
很多人并不关心这个。
还有另一个重要的细节,例如日期格式。
MySQL 和 Excel 的默认格式在第一次接触时会出现错误。
记得用STR_TO_DATE('2 02 3 -01 -01 ', '%Y-%m-%d')来转换,不然导入后就乱了。

一开始我以为直接用Python读进Panda就可以了,后来发现有一个旧的Excel有2 000张,直接读的时候就卡住了。
最后,批处理挽救了局面。

警告:数据类型匹配需要双重检查,特别是浮点数和字符串混合时。
上次我遇到问题时,某个金额字段被视为文本。

批量导入Excel到数据库

说实话,以前我把这些Excel分组导入数据库的时候,用得最多的就是“鲁导表”。
说实话,它相当容易使用,但每次使用它时,我都感到有点困惑,尤其是在处理许多不同的 Excel 文件时。

以SQL Server为例。
我通常将所有要导入的 Excel 文件转储到固定文件夹中。
注意是固定文件夹,不要重新排列,否则路径不匹配,导入时会出现很多乱码。
这些Excel文件最好使用统一的格式,例如.xlsx,表头位于第一行,否则导入时工具将无法处理。

打开“陆主任表单”并连接数据库。
这一步和之前一样。
只需填写服务器地址、端口、数据库名称、用户名和密码即可。
我曾经忘记填端口,所以无法连接,每次都要在防火墙上摆弄好久。

选择文件有两种操作。
其中一种是手动选择,适合文件不多的情况。
我很喜欢Ctrl+A全选的功能,但有时一个文件夹里的文件太多,点击这个很容易死机。
另一种是选择目录,我经常使用这个目录,尤其是当文件夹嵌套有子文件夹时。
记得勾选“遍历子目录”,否则你只会导入一层,下面的同级文件就没用了。
点击“开始”后,看到进度条缓慢运行,我心里有点不舒服,生怕某些文件格式不对,导致进度卡住。

导入并查看结果后,我习惯了关闭“自动将工作表名称附加到表名称”选项。
由于有时Excel文件名和工作表名称重叠,导致导入后表名后缀重复,造成数据库中表名混乱。
我通常将表名改为小写并加下划线,例如user_info,这样更容易看到数据库表结构。

字段名称和类型映射至关重要。
默认导入时,Excel中的数字变成VARCHAR类型,非常不方便。
我通常先在工具中设置映射规则。
例如,ID号设置为1 8 位,映射为CHAR(1 8 ),手机号码映射为VARCHAR(1 1 )。
我一般都是把中文的表名和字段名转成拼音或者直接用英文的。
毕竟数据库不兼容中文。

需要注意的事项之一是,我非常害怕在 Excel 中合并单元格。
这种情况下,“Delu引导表”的默认处理就不好,要么全部变成空值,要么整串字符都是乱码。
我通常使用 VBA 脚本将合并单元格的内容手动拆分为所有行,然后再将其导入 Excel。
还有一次我导入了几百个Excel文件,但是数据库CPU爆炸了,我不得不批量导入它们。

说实话,这个方法还是比较实用的,但是具体的细节有很多。
例如,我之前就有客户使用过这个工具。
由于Excel中有公式,导入后数据库全乱了。
最后,我发现我必须使用VBA将所有公式值导出为Excel中的纯文本。
因此,在使用Excel文件之前最好先了解一下Excel文件的具体情况。

将Excel文件导入到Navicat for MySQL数据库方法