Sql server SSDT2012将csv文件复制到部署服务器

Sql server SSDT2012将csv文件复制到部署服务器,sql-server,deployment,sql-server-data-tools,dacpac,Sql Server,Deployment,Sql Server Data Tools,Dacpac,我正在使用SSDT2012部署一个数据库项目。我有要填充的静态数据,但它位于.csv文件中。我将它添加到项目中,但看不到复制到服务器临时文件夹或类似文件夹的方法。 我试着加上 谢谢你的帮助 编辑:我一直在看,但它仍然不是一个解决方案。需要让每个人都将贡献者复制到他们的机器上,并且必须维护和修复它;这不是一种理想的方法。处理静态数据的建议方法是在部署前或部署后脚本中使用merge语句: 2000行相当多,但sql可以轻松处理 手动将2000行csv放入合并语句显然是一件非常痛苦的事情,因此您可以

我正在使用SSDT2012部署一个数据库项目。我有要填充的静态数据,但它位于.csv文件中。我将它添加到项目中,但看不到复制到服务器临时文件夹或类似文件夹的方法。 我试着加上 谢谢你的帮助


编辑:我一直在看,但它仍然不是一个解决方案。需要让每个人都将贡献者复制到他们的机器上,并且必须维护和修复它;这不是一种理想的方法。

处理静态数据的建议方法是在部署前或部署后脚本中使用merge语句:

2000行相当多,但sql可以轻松处理

手动将2000行csv放入合并语句显然是一件非常痛苦的事情,因此您可以使用Sql导入向导将其放入表中(基本上只是将其部署到某个位置),然后可以部署sp_generate_merge来创建合并语句,然后将其放入部署后脚本中:

如果您打算使用merge语句,那么无论您是否自动生成脚本,我都建议您使用Alex Whittles的这篇博客来帮助理解它们是如何工作的,因为它们一开始可能会非常混乱:

最后,在从静态数据中删除项时,应小心,如果在数据中有其他具有外键的表,并且删除了子表依赖的项,则merge语句将失败,因此在运行merge之前,应确保继续并处理部署前/部署后脚本中可能出现的任何问题。这些应该可以重新运行


Ed

它必须保持CSV身份吗?为什么不是部署后插入脚本?它有2000行。它可能是一个插入,但我需要一个优雅的解决方案,因为它可能会增长/将来可能会有多个类似的文件。为什么SQL Server数据工具支持“部署”CSV文件?在任何情况下,一旦您将该文件发送到服务器,您将如何处理该文件?将数据加载到数据库中以对其进行种子设定。虽然我确实同意您的回答,并且它的格式非常优雅,但我确实想知道,是否无法从这个o型项目复制该文件?似乎它应该支持开箱即用。我使用这种方法的问题是,我最终会得到一个数千行(如果不是数万行)的部署后脚本。我确实使用“推荐的”对于很多其他东西来说都是这样,但是对这个文件和其他类似文件的需求让我意识到这不是一个好的方法。如果在不同的表中有很多静态数据,你可以使用部署后脚本来管理它,比如使用openrowset将csv文件读入sql—一旦它进入sql(暂存表或临时表)您可以合并到实际表(例如:)+谢谢你说我的回答很优雅!这就是我正在尝试做的。我想从部署中将该文件复制到服务器上,并让PostDeploy脚本运行导入。发布时,我无法在服务器上获取该文件。正如我所说,我确实在很多小事情上使用了这种方法,但这种新情况只是让scal崩溃了ES和我不想做同样的事情。在这种情况下,我会考虑编写一个小的.NET应用程序,它封装DACPAC部署API,并允许您从任何地方导入CSV。请参见如何部署:导入CSV文件非常简单(使用C vb.net TextFieldParser)。,这样您就不必将任何文件复制到您无法控制的任何位置。我自己也没有这样做,但我想知道您是否可以使用后期生成事件命令行进行补充