如何在 VS2010 数据库项目中从 excel 加载测试数据

Posted

技术标签:

【中文标题】如何在 VS2010 数据库项目中从 excel 加载测试数据【英文标题】:How to load test data from excel in a VS2010 Database project 【发布时间】:2011-12-12 20:46:45 【问题描述】:

我正在使用VS2010数据库项目,希望能够加载:

将数据引用到任何实例中(独立开发、测试、...生产)

仅将测试数据放入开发和测试数据库中。

据我了解,参考数据是没问题的,我用脚本成一个部署后的脚本,会无条件运行。

对于测试数据,我知道我应该使用数据生成计划;并且我可以使用数据绑定生成器从数据源(如 Access、Excel 或文本文件)加载数据。 MSDN has a walkthrough on generating test data from an Excel spreadsheet,乍一看像我需要的,但它使用绝对路径来引用 Excel 文件。这似乎与将数据库项目置于源代码控制中不兼容,由可能在不同位置拥有工作区的不同用户访问。

在这种情况下加载测试数据的“最佳做法”是什么?我可以在连接字符串中使用相对路径并确保在所有开发人员机器上始终以相同的方式解释它吗?

我期待找到类似于 |DataDirectory| substitution string 的语法,它允许指定相对于数据库项目目录的路径。

【问题讨论】:

【参考方案1】:

使用 Excelreader 通过以下链接将 Excel 数据加载到数据集 http://exceldatareader.codeplex.com/

【讨论】:

我看不出您的回答与问题有何关联。【参考方案2】:

在进一步阅读中,我认为数据生成计划对于这种情况来说是错误的工具。

我现在正在做的是使用测试数据创建一个部署后脚本,然后确保使用 SQL 命令变量有条件地执行它。每个部署目标(隔离开发;UAT;PROD)都可以有自己的 SQL 命令变量文件(.sqlcmdvars),该文件将控制脚本是否运行。

例如要仅为 IsolatedDev 数据库加载测试数据,我可以在部署后脚本中使用以下内容:

IF '$(DatabaseName)' = 'IsolatedDev'
BEGIN
    ... insert statements to add test data
END

并确保不会无意中将测试数据加载到生产数据库中。

请随时分享经验和最佳做法。

【讨论】:

以上是关于如何在 VS2010 数据库项目中从 excel 加载测试数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 6 中从 VB 调用 VS2010 C++ dll

在Visual Studio 2010中从生成中排除moc-ed文件

如何在 VS 2017 中从其他编译器编译代码 [关闭]

在 Visual Studio 2010 中从 .NET 项目启动 C++ 项目

c#使用NPOI进行Excel导入导出,附源码,vs2010

在 JQuery 中从 VS 2005 的 .aspx 页面解析 XML 响应时一无所获