【发布时间】:2015-07-02 04:25:26
【问题描述】:
我想用 SSDT 中定义的一些数据预先填充我的数据库表。这样插入数据只发生一次。我正在使用 SQL 2005 ??我该怎么做??在 SQL 2008 中有 MERGE,但我在 2005 年找不到解决方案!!!
【问题讨论】:
标签: mysql sql visual-studio-2012 sql-server-data-tools dacpac
我想用 SSDT 中定义的一些数据预先填充我的数据库表。这样插入数据只发生一次。我正在使用 SQL 2005 ??我该怎么做??在 SQL 2008 中有 MERGE,但我在 2005 年找不到解决方案!!!
【问题讨论】:
标签: mysql sql visual-studio-2012 sql-server-data-tools dacpac
在看到你使用 SQL 2005 之前,我都很兴奋;),可怜的你,直到最近我还在使用 SQL 2005 数据库时,我才感觉到你的痛苦。
您需要执行以下操作:
"如果不存在 (select * from table where col = blah 将 xxx 插入表中 "
如果您有很多行,那么您可以考虑做一些事情,例如检查其中一行并从 cav 文件执行批量插入或 openrowset - 或 - 使用 redgate 数据比较来为您管理它。
埃德
【讨论】:
如果它是预定义的,您也许可以将其保存出来并使用 BCP 或类似的东西插入。您还可以编写脚本并将其作为某种“IF NEW”检查的一部分调用。但是,对于正在进行的脚本,最好的办法是插入临时表,然后执行某种 EXCEPT 或 LEFT JOIN 以找出不存在的内容,并酌情更新或插入。
没有真正干净的方法来做到这一点,但它是可行的。我担心的是您可能需要考虑一个单独的“新建”脚本并告诉人们创建数据库,然后如果他们重新创建了数据库则运行该脚本。这将使您的主要发布脚本的大小更易于管理。
【讨论】: