收藏!用Python一键批量将任意结构的CSV文件导入 SQLite 数据库。

     作者:牛思勉

     来源:智能演示

上周,推送了一篇:“ 收藏!用Python一键批量将任意结构的CSV文件导入MySQL数据库。” 本文是上篇的姊妹篇,只不过是把数据库换成了 Python 自带的SQLite3。

使用 SQLite3 的优势还是很明显的,它是一种嵌入式数据库,只是一个.db格式的文件,无需安装、配置和启动,移植性非常好。是轻量级数据的不二之选!推荐看一下我写的入门文章:“ 收藏!Python内置的轻量级数据库竟如此好用!全网最实用sqlite3实战项目。”

上一篇介绍的是一键批量导入 MySQL 数据库,这一篇介绍的是一键批量导入 SQLite3 数据库,两者代码 90% 相同。所以本文重点介绍不同之处。

先看一下程序运行效果:

程序运行动图演示.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 文件的名称,计算出一个数据库表名称,确保计算出的表名称符合数据库规则:

filename = '`' + 'tab_' + file.split('.')[0].replace('-', '_').replace(' ', '_').replace(':','') + '`'

首先,在数据库表名称前加上 tab_ ,避免纯数字作为表名称时程序报错;其次,替换了 -:空格;最后,在数据库表名称前后加上一对反引号。

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)

和数据库表名称优化一样,替换了 -:空格等特殊符号,并在每一个字段名称前后加上一对反引号。

3. SQL 语句不同

3.1 创建自增主键语句不同

创建 MySQL 数据库自增主键的语句是:id0 int PRIMARY KEY NOT NULL auto_increment;创建 SQLite 数据库自增主键的语句是:id0 INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL

两者略有不同,SQLite 是用 AUTOINCREMENT 创建自增主键。

3.2 插入数据的语句不同

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()

主要区别是:SQLite 使用 ? 来占位。

以上就是一键批量将任意结构的CSV文件导入SQLite数据库与MySQL数据库代码的主要不同点。如果您还没有看过上一篇文章,强烈建议去看一下!上篇文章代码实现思路方面讲解的更详细:“ 收藏!用Python一键批量将任意结构的CSV文件导入MySQL数据库。”

下面给大家介绍一款 SQLite 数据可视化工具:

SQLiteStudio 是一款绿色小巧的 SQLite 数据库可视化工具,功能强大,操作简单。

我们可以将上文自动导入生成的数据库 csv.db 添加到 SQLiteStudio 中,可以很方便的查看到数据库中有哪些表,以及表结构和数据。见下图:

添加数据库动图演示.gif

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

查询动图演示.gif

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

本文完,谢谢阅读!

本文 源代码

◆ ◆ ◆  ◆ ◆

长按二维码关注我们
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:


猜你喜欢
● 笑死人不偿命的知乎沙雕问题排行榜● 用Python扒出B站那些“惊为天人”的阿婆主!● 互联网大佬学历&背景大揭秘,看看是你的老乡还是校友● 上万条数据撕开微博热搜的真相!● 你相信逛B站也能学编程吗?
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将CSV文件导入SQLite,您可以按照以下步骤操作: 1. 打开CSV文件并读取其中的数据。 2. 连接到SQLite数据库。 3. 创建一个表格,其中包含与CSV文件中的列相对应的列。 4. 将CSV文件中的数据插入到SQLite表格中。 5. 关闭数据库连接。 以下是一个示例代码: ```python import csv import sqlite3 # 打开CSV文件并读取数据 with open('data.csv', 'r') as file: reader = csv.reader(file) data = [row for row in reader] # 连接到SQLite数据库 conn = sqlite3.connect('mydatabase.db') cursor = conn.cursor() # 创建表格 cursor.execute('''CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, gender TEXT)''') # 插入数据 for row in data: cursor.execute('INSERT INTO mytable (name, age, gender) VALUES (?, ?, ?)', row[1:]) # 提交更改并关闭连接 conn.commit() conn.close() ``` 请注意,此示例假定CSV文件的第一行包含列标题。如果不是这种情况,您需要相应地调整代码。 ### 回答2: CSV(Comma Separated Values)是一种常见的文本文件格式,该格式用逗号将数据字段分隔开,每个数据字段占一行。SQLite是一种轻量级的关系型数据库,它可以存储和管理大量的数据。 Python作为一个功能强大的编程语言,提供了许多库和模块用于CSV文件SQLite数据库的操作。下面我们将详细介绍如何使用PythonCSV文件导入SQLite。 步骤一:安装必要的库 首先,我们需要安装SQLitecsv模块,在Python中使用pip命令可以轻松安装这些模块: ``` pip install sqlite3 pip install csv ``` 步骤二:创建数据库和表 在Python中,我们可以使用sqlite3模块连接到SQLite数据库。在连接到数据库之后,我们需要创建一个表来存储CSV文件中的数据。以下是一个示例代码,用于创建一个名为“employees”的表,这个表有三个列,“ID”,“Name”和“Salary”。 ``` import sqlite3 # 连接到SQLite数据库 conn = sqlite3.connect('employees.db') # 创建一个游标 cursor = conn.cursor() # 创建一个employees表 cursor.execute('''CREATE TABLE employees (ID INT PRIMARY KEY NOT NULL, Name TEXT NOT NULL, Salary REAL);''') # 关闭游标和连接 cursor.close() conn.close() ``` 步骤三:读取CSV文件 现在我们已经创建了数据库和表,下一步就是读取CSV文件Pythoncsv模块提供了一种方便的方法来读取CSV文件中的数据。以下是一个示例代码,用于从名为“employees.csv”的文件中读取数据并存储在列表中。 ``` import csv # 打开CSV文件 with open('employees.csv', 'r') as csvfile: # 创建一个CSV阅读器 reader = csv.reader(csvfile) # 跳过标题行 next(reader) # 遍历CSV文件中的每一行 for row in reader: # 将行插入到employee表中 cursor.execute("INSERT INTO employees (ID, Name, Salary) VALUES (?, ?, ?)", row) ``` 步骤四:保存数据并关闭连接 一旦我们已经将数据插入到表中,下一步就是保存数据和关闭连接。 ``` # 提交更改 conn.commit() # 关闭游标和连接 cursor.close() conn.close() ``` 经过这些步骤,我们成功地将CSV文件中的数据导入SQLite数据库中。在以后的工作中,我们可以轻松地在SQLite数据库中查询、更新、删除和添加数据。 ### 回答3: Python 处理 CSV 文件SQLite 数据库都是比较常见的操作,如果能将 CSV 文件导入 SQLite 数据库中,可以方便地进行数据存储和查询等操作。以下是 PythonCSV 文件导入 SQLite 数据库的具体方法。 1. 首先需要安装 sqlite3 和 csv 两个模块,一般情况下,Python 自带安装,如果未安装可以使用以下命令安装: ```python import sqlite3 import csv ``` 2. 准备 CSV 文件SQLite 数据库,分别将它们放在合适的位置,本例中将代码与数据组织在同一目录下。 3. 连接 SQLite 数据库并创建数据表,代码如下: ```python connection = sqlite3.connect("example.db") cursor = connection.cursor() cursor.execute('''CREATE TABLE example ( ID INT PRIMARY KEY NOT NULL, NAME TEXT, AGE INT, GENDER TEXT, ADDRESS TEXT );''') ``` 4. 读取 CSV 文件,并将数据插入 SQLite 数据库的数据表中,代码如下: ```python with open('example.csv') as csvfile: readCSV = csv.reader(csvfile, delimiter=',') for row in readCSV: cursor.execute('''INSERT INTO example(ID, NAME, AGE, GENDER, ADDRESS) VALUES(?,?,?,?,?)''', (row[0], row[1], row[2], row[3], row[4])) ``` 其中,csv.reader() 方法读取 CSV 文件,delimiter=',' 参数指定分隔符为逗号,逐行读取 CSV 文件中的数据,将其插入 SQLite 数据库的数据表中,使用 execute() 方法执行 SQL 语句。 5. 提交更改: ```python connection.commit() ``` 6. 关闭数据库连接: ```python connection.close() ``` 以上就是 PythonCSV 文件导入 SQLite 数据库的详细步骤。需要注意的是,在实际的应用中,要根据自己的数据表结构、数据内容和代码逻辑作出相应的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值