0

我想用 SSDT 中定义的一些数据预先填充我的数据库表。这样插入数据只发生一次。我正在使用 SQL 2005 ?? 我该怎么做??在 SQL 2008 中有 MERGE 但我在 2005 年找不到解决方案!!!

4

2 回答 2

0

直到我看到你使用 SQL 2005 之前,我都很兴奋;),可怜的你,直到最近我还在使用 SQL 2005 数据库时,我才感觉到你的痛苦。

您将需要执行以下操作:

"如果不存在 (select * from table where col = blah Insert xxx into table"

如果您有很多行,那么您可以考虑做一些事情,例如检查其中一行并从 cav 文件中进行批量插入或 openrowset - 或者 - 使用 redgate 数据比较来为您管理它。

埃德

于 2015-07-01T05:51:13.430 回答
0

如果它是预定义的,您可能可以使用 BCP 或类似的东西保存并插入。您还可以编写脚本并将其作为某种“IF NEW”检查的一部分调用。但是,对于正在进行的脚本,您最好的选择是插入临时表,然后执行某种 EXCEPT 或 LEFT JOIN 以找出不存在的内容并酌情更新或插入。

没有真正干净的方法来做到这一点,但它是可行的。我担心的是,您可能需要考虑一个单独的“新建”脚本并告诉人们创建数据库,然后在他们重新创建数据库后运行该脚本。这将使您的主要发布脚本的大小更易于管理。

于 2015-07-01T20:25:26.430 回答