首先,我在云端使用MySQL(Amazon RDS)。我的数据库定义脚本具有用于创建视图,触发器,存储过程,用户,向用户授予权限以及插入一些数据(例如查找表)等的语句。此脚本具有2000行SQL代码。我将此脚本保存在一个文件中并使用以下命令执行:mysql --user = myusername --password = mypassword<< my.script.sql。该文件受SVN保护。
将所有SQL代码放在一个文件中的问题是,很难看到只有一个项目的SVN历史记录(假设我想查看表任务和视图TaskView的SVN历史记录)....所以我的问题是:人们如何存储这样的脚本?专业人员是否将每个项目(表,视图,存储过程)存储在目录中的自己的文件中?如果是这样,必须制作一个脚本,在文件夹中部署所有迷你SQL脚本?人们只是创建一个脚本来查找每个.SQL文件并将其转储到数据库中吗?人们使用各种文件夹来组织这样的脚本吗?例如,一个用于视图的文件夹,一个用于表的文件夹,一个用于存储过程的文件夹?
干杯!
答案 0 :(得分:1)
我们有以下文件夹结构
+ddl
....group1_ddl.sql
....group2_ddl.sql
+procedures
---level1
......single_sp.sql
......another_sp.sql
---level2
......another_uses_level1_sp.sql
---leveln
......remaining_sp.sql
+views
--level1
......group_of_views.sql
如您所见,我们有3个顶级文件夹,分别用于ddl,sps和views
<强> DDL 强>
90%的时间我们为所有表都有一个ddl脚本 有时我们分别维护ddl脚本,这些脚本可以逻辑分离 例如:staging_ddl.sql,aggrigate_ddl.sql ddl脚本包括PK和FK constriants以及附加的indeces
存储过程
注意多个文件夹(level1,level2),因为我们的整个ETL &安培;业务是在存储过程中实现的,所以我们有很多sps (几十个)有数百行代码。既然我们写的是模块化的 编码我们有一些sps取决于其他sps。所以sps哪个 依赖于其他sps进入更高水平
例如:在我们的场景中,main_sp.sql是一个运行整个工作流程的sp,这个sp实习生按顺序调用其余的sps,他们的实习生可能会或可能不会调用其他sps
所以main_sp.sql转到level3,child_sp.sql转到level2, grand_child_sp.sql转到level1
<强>查看:强>
这是我7年来成功管理脚本的方式。
希望这有帮助