要将数百万条记录从客户端数据库高效地导入到目标数据库中,可以采用以下几种方法:
以下是一个使用Python和SQLAlchemy进行批量导入的示例:
from sqlalchemy import create_engine, Table, MetaData
from sqlalchemy.orm import sessionmaker
import pandas as pd
# 假设客户端数据库为SQLite,目标数据库为PostgreSQL
client_engine = create_engine('sqlite:///client.db')
target_engine = create_engine('postgresql://user:password@host/dbname')
# 创建会话
Session = sessionmaker(bind=target_engine)
session = Session()
# 读取客户端数据库中的数据
metadata = MetaData(bind=client_engine)
source_table = Table('source_table', metadata, autoload_with=client_engine)
data = pd.read_sql(source_table.select(), client_engine)
# 禁用目标表的索引(如果支持)
with target_engine.connect() as conn:
conn.execute('ALTER TABLE target_table DISABLE TRIGGER ALL;') # PostgreSQL 特定命令
conn.execute('ALTER INDEX ALL ON target_table DISABLE;')
# 批量插入数据
data.to_sql('target_table', target_engine, if_exists='append', index=False, chunksize=10000)
# 重新启用索引
with target_engine.connect() as conn:
conn.execute('ALTER TABLE target_table ENABLE TRIGGER ALL;')
conn.execute('ALTER INDEX ALL ON target_table ENABLE;')
session.commit()
通过上述方法,可以在较短时间内高效地将大量数据从一个数据库迁移到另一个数据库。
领取专属 10元无门槛券
手把手带您无忧上云