C# 具有主子关系的PGSQL中的大容量插入
我正在将数据从旧模式迁移到更新的模式(PG作为新数据库) 我正在使用C#自动化这个过程 这是一个显示原始数据的屏幕截图(要理解的示例) 根据更新的模式,此源数据需要分为两个表C# 具有主子关系的PGSQL中的大容量插入,c#,postgresql,C#,Postgresql,我正在将数据从旧模式迁移到更新的模式(PG作为新数据库) 我正在使用C#自动化这个过程 这是一个显示原始数据的屏幕截图(要理解的示例) 根据更新的模式,此源数据需要分为两个表Vehicles和PartPricing。 品牌、型号和年份的唯一组合将插入到车辆中,并与唯一Id链接。 然后,零件和零件价格将插入到零件定价表中,并需要与车辆ID链接。(VehicleId指车辆Id表) 下面的屏幕显示了预期的输出。 我采用的方法是- 获取品牌、型号和年份的唯一列表,生成批量插入查询并执行 获取所有插入
Vehicles
和PartPricing
。
品牌、型号和年份的唯一组合将插入到车辆中
,并与唯一Id链接。
然后,零件和零件价格将插入到零件定价
表中,并需要与车辆ID
链接。(VehicleId指车辆Id表)
下面的屏幕显示了预期的输出。
我采用的方法是-
Insert into Vehicles(Make, Model, Year) values
('Honda', 'City', 2010),
('Honda', 'City', 2011),
('Hyundai', 'Accent', 2011),
....
('Toyota', 'Corolla', 2015);
可能缺少索引:
创建车辆索引(品牌、型号、年份)代码>创建数据库时,在内存量和检索时间之间进行权衡。您的新方法占用内存,因为您不会重复在多辆车上使用的零件,但检索数据需要更多时间,因为您必须连接两个表。我更新了第4点,只是为了明确我不是在查询数据库。而是将所有车辆数据缓存到内存中(通过收集),然后使用LINQ查找车辆id。