首页 > 数据库 >将DBF文件(dBase, FoxPro等)中的数据转换到SQLite

将DBF文件(dBase, FoxPro等)中的数据转换到SQLite

时间:2024-07-17 11:31:05浏览次数:18  
标签:files SQLite name FoxPro db dbf path table DBF

将DBF文件(dBase, FoxPro等)中的数据转换到SQLite,可遍历指定目录下所有的dbf文件。可参考以下程序,本程序参考了dbf-to-sqlite: 

# _*_coding: utf-8 _*_
'''
@File:        main.py
@Time:        2024/07/17
@Author:      LionGIS
@Contact:     [email protected]
@Description: 将DBF文件(dBase, FoxPro等)中的数据转换到SQLite
'''

import fnmatch
import os
import click
import dbf
from pathlib import Path
from sqlite_utils import Database

def main(dbf_paths, sqlite_db, table_name=None, verbose=None):
    """
    Convert DBF files (dBase, FoxPro etc) to SQLite
    https://github.com/simonw/dbf-to-sqlite
    """
    db = Database(sqlite_db)

    db_files = []
    # 遍历目录
    # for root, dirs, files in os.walk(dbf_paths):
    files = os.listdir(dbf_paths)
    for file in files:
        if fnmatch.fnmatch(file, '*.dbf'):
            if table_name:
                if (table_name + ".dbf").lower() == file.lower():
                    db_files.append(os.path.join(dbf_paths, file))
            else:
                db_files.append(os.path.join(dbf_paths, file))

    for path in db_files:
        table_name = Path(path).stem
        if verbose:
            click.echo('加载 {} 插入表 "{}"'.format(path, table_name))
        table = dbf.Table(str(path))
        table.open()
        columns = table.field_names
        db[table_name].insert_all(dict(zip(columns, list(row))) for row in table)
        table.close()
    db.vacuum()

if __name__ == "__main__":
    # 根目录
    base_path = r"c:/demo/"

    #  dbf文件路径
    dbf_path = base_path + ""
    #  sqlite文件路径 + 文件名
    sqlite_db = base_path + "database.db"
    #  表名,None为所有dbf文件
    table_name = None
    main(dbf_path, sqlite_db, table_name, True)

 

标签:files,SQLite,name,FoxPro,db,dbf,path,table,DBF
From: https://www.cnblogs.com/liongis/p/18306881

相关文章

  • linux高级编程(sqlite数据库调用)
    数据库1、分类:大型  中型        小型      ORACLE MYSQL/MSSQL SQLITE DBIIpowdb      关系型数据库    2、名词:      DB      数据库selectupdatedatabase      DBMS   数据库管理......
  • sqlalchemy pandas转化字典转为orm写入到sqlite数据库报错类型错误的解决办法
    使用pandas读取csv数据,然后将其转化为字典,再写入到数据库的时候,数据库总是报错类型错误,于是转为orm之前,统一转化一下类型fromsqlalchemyimportDECIMAL,Index,String,Date,Integer,Text,CHAR,SmallInteger,Float,Time,case,and_,extract,TypeDecoratorfrom......
  • SQLite各种连接大展神威
    一、概述1.SQLite定义了3种连接:交叉连接(CROSSJOIN)、内连接(INNERJOIN)、外连接(OUTERJOIN)。2.外连接(OUTERJOIN,OUTER关键字可以省略)是内连接(INNERJOIN,默认的连接类型,INNER关键字可以省略)的扩展。虽然SQL标准定义了三种类型的外连接:LEFT、RIGHT、FULL,但SQLite只支持左外......
  • sqlite3之基础
    最近在用Python借助于pySimpleGui做一个桌面小工具,奉行小巧,简单的宗旨,使用了本地数据库sqlite3来进行本地数据的存储参考:官网: https://www.sqlite.org/指导教程:https://www.sqlitetutorial.net/ 基础语法比较简单,跟MySQL差异并不大,半小时了解一下: http......
  • SQLite数据库恢复
    一、使用备份文件恢复直接替换法:如果之前有备份数据库文件,最简单直接的恢复方法就是将备份文件直接替换掉损坏的或丢失的数据库文件。这种方法简单快捷,但需要注意在替换过程中确保没有其他程序正在访问数据库文件,以免造成数据不一致。使用SQLite命令行工具恢复:SQLite提供了命......
  • sqlite数据库解密恢复
    关于SQLite数据库解密恢复的问题,需要明确的是,SQLite本身并不直接支持加密功能。SQLite数据库文件(通常是.db或.sqlite文件)在默认情况下是不加密的,即数据以明文形式存储。因此,当提到“解密恢复”时,可能指的是对通过第三方工具或方法加密过的SQLite数据库进行解密和恢复。一、确定......
  • QT--SQLite
    配置类相关的表,所以我使用sqlite,且QT自带该组件;1.安装sqlite-tools-win-x64-3460000、SQLiteExpert5.4.31.575使用SQLiteExpert建好数据库.db文件,和对应的表后把db文件放在指定目录./db/program.db;2.选择sql组件3.新增数据库处理类,在使用数据库的地方调用类成员函数......
  • 【SQLite3】常用API
    SQLite3常用API数据库的打开和关闭数据库的打开(sqlite3_open函数)sqlite3_open()函数用于打开一个SQLite数据库文件的函数,函数原型如下:intsqlite3_open(constchar*filename,/*数据库文件的文件名,如果为":memory:"则表示创建内存中数据库*/sqlite3......
  • 五、保存数据到Excel、sqlite(爬虫及数据可视化)
    五、保存数据到Excel、sqlite(爬虫及数据可视化)1,保存数据到excel1.1保存九九乘法表到excel(1)代码testXwlt.py(2)excel保存结果1.2爬取电影详情并保存到excel(1)代码spider.py(3)excel保存结果2,保存数据到sqlite2.1sqlite数据库2.2创建表2.3插入数据2.4查询数据2.5保存......
  • 【Unity几种数据存储之间的区别】PlayerPrefs、Json、XML、二进制、SQLite数据存储之
    ......