首页 > 如何插入大量数据到数据库?

如何插入大量数据到数据库?

我处理一个有40多w条的数据的文本,每次取了1w条数据然后存入数据库。我用sqlalchemy定义了下面几个表:

class Position(Base):
    __tablename__ = 'position'
    
    id = Column(...)
    name = Column(...)
    city_id = Column(Integer, ForeignKey('city.id'))

class City(Base):
    __tablename__ = 'city'
    
    id = Column(...)
    name = Column(...)
    positions = relationship('Position', backref='city')

我是这样处理的,每读到1w条数据,就保存到队列中去,然后开一个线程去队列的数据,用sqlalchemysession.add_all(objs)插入1w条数据,但是我在创建Position对象的时候,是这样的:

city = session.query(City).filter_by(name=name)
if city is None:
    city = City(name=name)
position = Position(name=name)
position.city = city

这样因为是插入的1w条数据,相同的city可能会重复的插入,因为查询判断的时候之前的city还没有插入进去,导致会插入重复的数据。

我对数据库不是很熟悉,将Cityname设置为unique是否有用?或者每次用session.add(obj)插入一条,但是这样速度是不是很慢?

求各位大神给意见啊!!!!


begin
insert
insert
commit
【热门文章】
【热门文章】