假设我有2个数据库文件,主数据库和新数据库。每次发布新数据库文件时,用户都需要从新数据库更新主数据库。
我尝试过的是从新数据库中选择所有行,然后使用reader.Read()逐行查看。在循环内部,我将检查更新sql是否返回-1,然后我将执行insert sql。
上述方法存在性能问题,因为它需要遍历每一行才能执行更新或插入。我建议的解决方案是将新数据库附加到主数据库中,然后执行" INSERT或REPLACE表SELECT * FROM newdatabase.table"。
但很快我意识到了一个问题。我实际上没有表中的主键,或者主键无助于决定INSERT或REPLACE。这是由于某些特定的客户要求。在这种情况下,我不能在没有主键的情况下使用INSERT或REPLACE,例如要比较的列(CustomerName)不是唯一键或主键。
如果你有更好的解决方案,请告诉我,谢谢!
答案 0 :(得分:-1)
为了插入缺失的行 - 并使用附加的数据库 - 你可以这样做:
插入表1(col2,col3,...)选择col2,col3,...
来自newdatabase.Table1,其中customername不在(从表1中选择customername)
这假设col1是主要的自动增量ID。您需要命名除此col1之外的所有列。对于更新,请在'中使用'客户名称执行类似的更新命令。