代码之家  ›  专栏  ›  技术社区  ›  Richard

如何将MS Access数据库(.mdb)文件转换为Sqlite?

  •  -1
  • Richard  · 技术社区  · 6 年前

    我有MS接入 .mdb 文件,我要将其转换为SQLite数据库。

    我需要转换所有表并将数据转储到其中。

    有没有FOSS命令行工具可以在Linux上做到这一点?

    1 回复  |  直到 6 年前
        1
  •  -1
  •   Richard    6 年前

    很难找到这样的东西,但我已经构建了一个方便的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)