美文网首页
用Python一键批量将任意结构的CSV文件导入 SQLite

用Python一键批量将任意结构的CSV文件导入 SQLite

作者: 孤城暮雨丶 | 来源:发表于2021-01-12 13:46 被阅读0次

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

本文章来自腾讯云 作者:数据森麟

私信小编回复01可领取学习资料以及学习视频

在这里插入图片描述 在这里插入图片描述

程序运行动图演示.gif

两篇文章使用的数据源是一模一样的。经本人亲测,导入到 SQLite3 的速度要比导入到 Mysql 快的多。这也进一步验证了,处理轻量级数据,SQLite 要便捷、快速的多。

下面我们就来看看两者代码的主要不同吧:

1. 数据库连接方式不同

try:
    conn = conn = sqlite3.connect(path+'\csv.db')
    cur = conn.cursor()
    print('数据库连接成功!')
    print(' ')
except:
    print('数据库连接失败!')

SQLite3 数据库的连接方式更简单,直接指明路径即可。

2. 代码优化,提高通用性

2.1 优化了数据库表名称

for file in files:
    if file.split('.')[-1] in ['csv']:
        i += 1
        filename = '`' + 'tab_' + file.split('.')[0].replace('-', '_').replace(' ', '_').replace(':','') + '`'

通过遍历每一个 CSV 文件的名称,计算出一个数据库表名称,确保计算出的表名称符合数据库规则:


在这里插入图片描述

2.2 优化了数据库表字段名称

types = f.ftypes
        field = [] #用来接收字段名称的列表
        table = [] #用来接收字段名称和字段类型的列表
        for item in columns:
            item1 = '`'+item.replace('-', '_').replace(' ', '_').replace(':','')+'`'
            if 'int' in types[item]:
                char = item1 + ' INT'
            elif 'float' in types[item]:
                char = item1 +' FLOAT'
            elif 'object' in types[item]:
                char = item1 +' VARCHAR(255)'
            elif 'datetime' in types[item]:
                char = item1 + ' DATETIME'
            else:
                char = item1 + ' VARCHAR(255)'
            table.append(char)
            field.append(item)

        tables = ','.join(table)
        #print(tables)
        fields = ','.join(field)
        #print(fields)

在这里插入图片描述
values = f.values.tolist()
s = ','.join(['?' for _ in range(len(f.columns))])
insert_sql = 'insert into {}({}) values({})'.format(filename,fields,s)
cur.executemany(insert_sql, values)
conn.commit()

在这里插入图片描述 在这里插入图片描述

添加数据库动图演示.gif

我们也可以打开一个 SQL编辑器,输入 SQL 命令,执行你想要的操作。见下图:


在这里插入图片描述

查询动图演示.gif

SQLiteStudio 还有很多好用的功能,本文不再介绍,感兴趣的朋友可以研究一下。

本文完,谢谢阅读!

相关文章

网友评论

      本文标题:用Python一键批量将任意结构的CSV文件导入 SQLite

      本文链接:https://www.haomeiwen.com/subject/xkosaktx.html