python將一個文件夾中多個sqlite3文件合并為一個名字為匯總的文件放到其他路徑中
时间: 2024-04-12 22:27:52 浏览: 13
您可以使用以下代码将一个文件夹中的多个 SQLite3 文件合并为一个名为 "匯總.sqlite3" 的文件,并将其放置在另一个路径中:
```python
import os
import sqlite3
import shutil
# 源文件夹路径
source_folder = "源文件夹路径"
# 目标文件夹路径
target_folder = "目标文件夹路径"
# 合并后的文件名
merged_filename = "匯總.sqlite3"
# 创建目标文件夹(如果不存在)
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 创建合并后的数据库连接
merged_conn = sqlite3.connect(os.path.join(target_folder, merged_filename))
merged_cursor = merged_conn.cursor()
# 遍历源文件夹中的所有文件
for filename in os.listdir(source_folder):
if filename.endswith(".sqlite3"):
# 打开源数据库连接
source_conn = sqlite3.connect(os.path.join(source_folder, filename))
source_cursor = source_conn.cursor()
# 获取源数据库中的所有表名
source_cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = source_cursor.fetchall()
# 遍历所有表
for table in tables:
table_name = table[0]
# 在合并后的数据库中创建表
source_cursor.execute("SELECT sql FROM sqlite_master WHERE name=?", (table_name,))
create_table_sql = source_cursor.fetchone()[0]
merged_cursor.execute(create_table_sql)
# 将数据从源数据库表复制到合并后的数据库表
source_cursor.execute("SELECT * FROM {};".format(table_name))
rows = source_cursor.fetchall()
for row in rows:
merged_cursor.execute("INSERT INTO {} VALUES {}".format(table_name, row))
# 关闭源数据库连接
source_conn.close()
# 提交并关闭合并后的数据库连接
merged_conn.commit()
merged_conn.close()
# 移动合并后的文件到目标文件夹
shutil.move(os.path.join(target_folder, merged_filename), os.path.join(target_folder, merged_filename))
```
请将代码中的 `"源文件夹路径"` 替换为包含要合并的 SQLite3 文件的文件夹路径,并将 `"目标文件夹路径"` 替换为您想要将合并后的文件放置的目标文件夹路径。合并后的文件将被命名为 "匯總.sqlite3" 并放置在目标文件夹中。