Excel VBA 编程 -- 大数据量写入数据库(三)
前面两篇我们分别讨论了 VBA 和 Delphi 将 Excel 数据集写入数据库的问题,今天是最后一篇,讨论效率最高的方法——Python/Pandas 方法。在昨天的文章中,我们说过,VBA 与 Delphi 相比拼,二者互有胜负。但 Python/Pandas 则是绝对的王者。请看我刚刚得到的测试结果:Python/Pandas 在不到 7 秒的时间内将 10 万条记录的 Excel 数据集写入到了 SQL Server 2025 数据库中。SQLAlchemy/PyODBC 还不能正确处理 SQL Server 的最新版本,给出了警告信息。Python/Pandas 读取 Excel 数据集并写入 SQL Server 数据库的程序 WriteDataToDb.py,其结构如下:Pandas 通过 OpenPyxl 读取 Excel 数据集,通过 SQLAlchemy 经由 PyODBC 写入 SQL Server 数据库。函数 create_dbengine() 是经由 pyodbc 建立与 mssql 数据库的连接,pyodbc 只是 ODBC 的 Python 封装,实际调用的是 ODBC Driver 18 for SQL Server,SQLAlchemy 是类似 ADO 的高层关系-对象模型(ORM)。大部分 Python 程序都是通过 SQLAlchemy 访问数据库的。函数 write_excel_to_db 是调用 Pandas 的 read_excel 函数读取 Excel 数据集,再调用 to_sql 将数据集写入数据库。第 49 行 if __name__ == '__main__': 及以下的部分是主控程序,调用 time.perf_counter 实现计时,并将计时结果写回 Excel 文件。Python/Pandas 方案因为直接操纵 Excel 文件,无需启动庞大而复杂的 Excel 程序,所以效率相对要高得多。在探索过 VBA、Delphi、Python 各种方案之后,对于朋友的提问“有没有一次性上传数据库的办法,遍历数据太慢”,至此已经有了完满的回答:有!写一段 Python 代码,通过 Pandas 读取 Excel 数据集,并通过 SQLAlchemy 写入数据库。近几年来,Python 长期占据 TIOBE 编程语言排行榜的首位,今天我们看到,Python 并非浪得虚名。犹如 40 年前的 C 一样,今天的 Python 也值得所有人去学习、掌握。