database - 如何将 MS Access 数据库 (.mdb) 文件转换为 Sqlite?
问题描述
我有一个 MS Access.mdb
文件,我想将其转换为 SQLite 数据库。
我需要转换所有表并将数据转储到里面。
是否有任何 FOSS 命令行工具可以在 Linux 上执行此操作?
解决方案
很难找到这样的东西,但我已经构建了一个方便的 Python 实用程序来使用SQLAlchemy和pandas_access来完成它,它依赖于mdbtools。
您需要的一切都可以通过以下方式获得:
pip3 install sqlalchemy pandas_access
sudo apt install mdbtools
代码如下:
#!/usr/bin/env python3
import pandas_access as mdb
from sqlalchemy import create_engine
import sys
import os
if len(sys.argv)!=3:
print("{0} <MDB File> <Sqlite3 File>".format(sys.argv[0]))
sys.exit(-1)
if os.path.isfile(sys.argv[2]):
print("Refusing to modify existing database!")
sys.exit(-1)
engine = create_engine('sqlite:///{0}'.format(sys.argv[2]), echo=False)
tlist = [tbl for tbl in mdb.list_tables(sys.argv[1])]
tables = {tbl:mdb.read_table(sys.argv[1], tbl) for tbl in tlist}
for k in tables:
tables[k].to_sql(k, con=engine)
推荐阅读
- vb.net - 使用 vb.net 使用公钥进行 pgp 加密
- angular - 如何防止 Angular 应用程序在 Index.html 中加载
- android - Parcelable Map的正确方法?
- joomla - 如何在 Joomla 中为插件添加参数?
- php - 根据列值动态选择列
- mongodb - StreamSets 获取 MongoDB 字段
- git - 如何从另一台计算机更新现有的 github 存储库?
- sql - 将表和数据库服务器传递给存储过程
- spring - 将 Mapstruct 上下文包含到内部映射器中
- php - 它不会显示输出中进度条的百分比,也不会中止上传。我认为 $form 不起作用