验证SQL文件-SQL验证程序

验证SQL文件-SQL验证程序,sql,oracle,Sql,Oracle,我们有一个在SQL文件中添加SQL更改的应用程序,这些更改在测试和其他环境中的安装期间运行。所以我们大约有25个人在工作,如果有人犯了任何错误,那么它就会在测试环境中中断,因为这些是DDL、DML,有时甚至是语法错误 现在为了避免这种情况,我正在考虑构建SQl验证器,该验证器将对SQl文件中的查询运行执行计划。SQL语句编写为单行或多行。我们必须格式化它们,然后找出语法错误或任何其他错误,然后报告它。所以,在测试中安装时,它应该会中断,并节省大量时间和返工 现在,我们手动检查SQL文件,但在那个

我们有一个在SQL文件中添加SQL更改的应用程序,这些更改在测试和其他环境中的安装期间运行。所以我们大约有25个人在工作,如果有人犯了任何错误,那么它就会在测试环境中中断,因为这些是DDL、DML,有时甚至是语法错误

现在为了避免这种情况,我正在考虑构建SQl验证器,该验证器将对SQl文件中的查询运行执行计划。SQL语句编写为单行或多行。我们必须格式化它们,然后找出语法错误或任何其他错误,然后报告它。所以,在测试中安装时,它应该会中断,并节省大量时间和返工

现在,我们手动检查SQL文件,但在那个之后,我们也有一些错误并没有被捕获,并且在测试中出错


任何建议都将不胜感激。

您说您想要一个SQL验证器,但您可能需要的是一个更好的开发过程

让我猜猜——您有一台每个人都在使用的开发服务器。他们在那里进行更改,希望不会破坏任何东西,从数据库中提取SQL语句,然后将它们应用到其他服务器

这就是大多数Oracle开发人员的工作方式。这是痛苦的,没有规模。有一种更好的方法可以使用几十年前开发的一些简单的软件开发方法

  • 版本控制是唯一的真理来源。大多数Oracle商店只将版本控制用作美化的备份。下面是对开发服务器上的每个模式的快速测试。如果您无法在5分钟内从源代码存储库中恢复并运行,那么您就没有真正使用版本控制

    问自己一个近乎哲学的问题——你的产品的真实、理想版本存在于哪里?即使您正在构建一个数据库产品,答案也应该是“版本控制的文本文件”,而不是“开发数据库”

  • 无限多的数据库和模式。这比听起来要简单-每个Oracle开发人员和测试人员都在他们的桌面上运行Oracle。然后,他们可以创建任意数量的实例和模式。我见过许多Java程序员这样做,但不幸的是,大多数Oracle开发人员认为这是不可能的

  • 自动化测试。自动化单元测试给您信心。听起来你现在对代码没有信心。您不应该担心语法错误——这是编程101的问题。如果团队中的每个人都在不断地构建和测试代码,那么错误将显著减少。有时事情仍然会破裂——你可以添加一些类似于持续集成的东西,或者只是羞辱那些不断破坏构建的人


  • 这三者的结合就是最终的SQL验证器。版本控制以确保您拥有正确的代码。本地实例,以便于安装和验证代码。自动测试来进行验证。

    你说你想要一个SQL验证器,但你可能需要的是一个更好的开发过程

    让我猜猜——您有一台每个人都在使用的开发服务器。他们在那里进行更改,希望不会破坏任何东西,从数据库中提取SQL语句,然后将它们应用到其他服务器

    这就是大多数Oracle开发人员的工作方式。这是痛苦的,没有规模。有一种更好的方法可以使用几十年前开发的一些简单的软件开发方法

  • 版本控制是唯一的真理来源。大多数Oracle商店只将版本控制用作美化的备份。下面是对开发服务器上的每个模式的快速测试。如果您无法在5分钟内从源代码存储库中恢复并运行,那么您就没有真正使用版本控制

    问自己一个近乎哲学的问题——你的产品的真实、理想版本存在于哪里?即使您正在构建一个数据库产品,答案也应该是“版本控制的文本文件”,而不是“开发数据库”

  • 无限多的数据库和模式。这比听起来要简单-每个Oracle开发人员和测试人员都在他们的桌面上运行Oracle。然后,他们可以创建任意数量的实例和模式。我见过许多Java程序员这样做,但不幸的是,大多数Oracle开发人员认为这是不可能的

  • 自动化测试。自动化单元测试给您信心。听起来你现在对代码没有信心。您不应该担心语法错误——这是编程101的问题。如果团队中的每个人都在不断地构建和测试代码,那么错误将显著减少。有时事情仍然会破裂——你可以添加一些类似于持续集成的东西,或者只是羞辱那些不断破坏构建的人

  • 这三者的结合就是最终的SQL验证器。版本控制以确保您拥有正确的代码。本地实例,以便于安装和验证代码。和自动化测试来进行验证