我想用SSDT中的一些已定义数据预先填充我的数据库表。这样插入数据只发生一次。我正在使用SQL 2005 ??我怎么能这样做?在SQL 2008中有MERGE但我在2005年找不到解决方案!!!
答案 0 :(得分:0)
直到我看到你使用SQL 2005之前,我都很兴奋;),很糟糕,直到最近我才感觉到你的痛苦,我正在使用SQL 2005 db。
您需要执行以下操作:
“如果不存在(从表格中选择*,其中col = blah 将xxx插入表中 “
如果你有很多行,那么你可以考虑做一些事情,比如检查其中一行并从cav文件中执行批量插入或openrowset - 或者 - 使用redgate数据比较来管理它。
版
答案 1 :(得分:0)
答案 2 :(得分:0)
如果它是预定义的,您可以通过保存并使用BCP或类似的东西来逃避。您也可以编写脚本并将其作为某种“IF NEW”检查的一部分进行调用。但是,对于正在进行的脚本,最好的选择是插入临时表,然后执行某种EXCEPT或LEFT JOIN以找出不存在的内容并根据需要进行更新或插入。
没有一种非常干净的方法,但这是可行的。我担心的是你可能想要考虑一个单独的“新”脚本并告诉人们创建数据库,然后如果他们重新创建数据库则运行该脚本。这样可以使主要版本脚本的大小更易于管理。