python將一個文件夾中多個db文件中表格合并為一個表格名字為匯總的文件放到其他路徑中
时间: 2024-04-12 12:27:55 浏览: 104
您可以使用以下代码来实现将一个文件夹中多个db文件中的表格合并为一个名为“匯總”的文件,并将其放到其他路径中:
```python
import os
import sqlite3
import shutil
# 源文件夹路径
source_folder = '源文件夹路径'
# 目标文件夹路径
target_folder = '目标文件夹路径'
# 目标文件名
target_file = '匯總.db'
# 创建目标文件夹(如果不存在)
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 创建或连接目标数据库
conn = sqlite3.connect(os.path.join(target_folder, target_file))
cursor = conn.cursor()
# 遍历源文件夹中的所有文件
for file_name in os.listdir(source_folder):
if file_name.endswith('.db'):
# 连接源数据库
source_db = sqlite3.connect(os.path.join(source_folder, file_name))
source_cursor = source_db.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(f"SELECT * FROM {table_name};")
data = source_cursor.fetchall()
# 创建目标表格(如果不存在)
cursor.execute(f"CREATE TABLE IF NOT EXISTS {table_name} AS SELECT * FROM {table_name} LIMIT 0;")
# 插入源表格数据到目标表格
cursor.executemany(f"INSERT INTO {table_name} VALUES ({','.join(['?'] * len(data[0]))});", data)
# 关闭源数据库连接
source_cursor.close()
source_db.close()
# 提交并关闭目标数据库连接
conn.commit()
cursor.close()
conn.close()
# 移动目标文件到目标文件夹
shutil.move(os.path.join(os.getcwd(), target_file), os.path.join(target_folder, target_file))
```
请将代码中的`源文件夹路径`替换为您实际的源文件夹路径,将`目标文件夹路径`替换为您想要保存目标文件的路径。运行代码后,将会在目标文件夹中生成一个名为“匯總.db”的文件,其中包含了所有源文件夹中的db文件中的表格数据。
阅读全文