遍历源文件夹中的所有文件 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() # 获取源表格的列名 source_cursor.execute(f"PRAGMA table_info({table_name});") columns = [column[1] for column in source_cursor.fetchall()] # 创建目标表格(如果不存在) cursor.execute(f"CREATE TABLE IF NOT EXISTS {table_name} ({','.join(columns)});") # 插入源表格数据到目标表格 cursor.executemany(f"INSERT INTO {table_name} VALUES ({','.join(['?'] * len(columns))});", data)修改這段代碼,在匯總時忽略ID列的重複
时间: 2024-04-12 15:28:02 浏览: 94
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
5星 · 资源好评率100%
在进行数据插入时,可以通过修改SQL语句来忽略ID列的重复。修改后的代码如下:
```python
# 遍历源数据库中的所有表格
for table in tables:
table_name = table[0]
# 读取源表格数据
source_cursor.execute(f"SELECT DISTINCT * FROM {table_name};")
data = source_cursor.fetchall()
# 获取源表格的列名
source_cursor.execute(f"PRAGMA table_info({table_name});")
columns = [column[1] for column in source_cursor.fetchall() if column[1] != 'ID']
# 创建目标表格(如果不存在)
cursor.execute(f"CREATE TABLE IF NOT EXISTS {table_name} ({','.join(columns)});")
# 插入源表格数据到目标表格
cursor.executemany(f"INSERT INTO {table_name} ({','.join(columns)}) VALUES ({','.join(['?'] * len(columns))});", data)
```
在这段代码中,我们使用了SELECT DISTINCT * 来获取数据,这样可以去除重复的行。同时,获取列名时排除了名为'ID'的列,避免重复插入。插入数据时也只插入了除去'ID'列以外的其他列。
阅读全文