在SSDT中的数据库中插入静态数据

时间:2015-07-01 04:57:21

标签: mysql sql visual-studio-2012 sql-server-data-tools dacpac

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

3 个答案:

答案 0 :(得分:0)

直到我看到你使用SQL 2005之前,我都很兴奋;),很糟糕,直到最近我才感觉到你的痛苦,我正在使用SQL 2005 db。

您需要执行以下操作:

“如果不存在(从表格中选择*,其中col = blah   将xxx插入表中 “

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

答案 1 :(得分:0)

您可以通过以下方式模拟MERGE行为:

https://stackoverflow.com/a/12621515/416988

我的2美分!

答案 2 :(得分:0)

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

没有一种非常干净的方法,但这是可行的。我担心的是你可能想要考虑一个单独的“新”脚本并告诉人们创建数据库,然后如果他们重新创建数据库则运行该脚本。这样可以使主要版本脚本的大小更易于管理。