# execute_sql_scripts **Repository Path**: javalxy/execute_sql_scripts ## Basic Information - **Project Name**: execute_sql_scripts - **Description**: 执行指定目录下的所有SQL文件,并记录文件的文件名和MD5值,验证当前SQL是否执行过,如果执行过则跳过当前SQL,如果发生变化,则报错给出提示。 - **Primary Language**: Shell - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-06-05 - **Last Updated**: 2024-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # execute_sql_scripts #### 功能说明 执行指定目录下的所有SQL文件,并记录文件的文件名和MD5值,验证当前SQL是否执行过,如果执行过则跳过当前SQL,如果发生变化,则报错给出提示。 #### 详细步骤 首先,脚本开始时会设置一些全局变量,包括指定 SQL 文件夹的路径、数据库连接信息以及备份文件夹的路径等。这些变量将在后续的操作中使用。 接下来,脚本定义了一个名为 create_md5_records_table 的函数,该函数用于创建一个名为 dev_ops 的数据库,并在其中创建一个名为 md5_records 的表。这个表用于存储 SQL 文件的文件名和对应的 MD5 值,以便后续检查文件内容是否有更改。 然后,脚本定义了一个名为 check_database_exists 的函数,用于检查指定的数据库是否存在。它通过查询信息模式数据库来获取数据库列表,并与指定的数据库名进行比较,如果数据库不存在,则输出相应的提示信息。 接着,脚本定义了一个名为 backup_folder 的函数,用于对 SQL 文件夹进行压缩备份。它使用当前日期和时间生成一个备份文件名,并使用 tar 压缩命令将 SQL 文件夹中的所有文件压缩到备份文件中。 然后,脚本定义了一个名为 execute_sql_file 的函数,用于检查并执行 SQL 文件。它首先检查当前文件是否存在于 md5_records 表中,如果存在,则比较计算的 MD5 值与数据库中存储的 MD5 值是否一致。如果文件不存在或 MD5 值不一致,就执行相应的 SQL 文件,并将执行结果进行输出。 接着,脚本定义了一个名为 store_md5_record 的函数,用于将 SQL 文件的文件名和计算得到的 MD5 值存储到数据库中的 md5_records 表中。 在主要的执行部分,脚本首先检查 SQL 文件夹是否存在,如果不存在,则输出相应的错误信息并退出脚本。然后,它调用 check_database_exists 函数来检查数据库是否存在。接着,它调用 create_md5_records_table 函数来创建数据库和表。然后,它统计 SQL 文件夹内的 SQL 文件数量,并调用 backup_folder 函数对 SQL 文件夹进行备份。 最后,脚本遍历 SQL 文件夹中的每个 SQL 文件,获取文件名和计算得到的 MD5 值,并调用 execute_sql_file 函数来检查并执行 SQL 文件。执行结果将进行统计,并输出执行结果的统计信息。 整个脚本的功能就是检查并执行 SQL 文件,同时提供了数据库和文件备份的支持。 #### 脚本的执行顺序 1. 检查 SQL 文件夹是否存在 2. 检查数据库是否存在 3. 创建 `md5_records` 表 4. 统计 SQL 文件夹内的 SQL 文件数量 5. 备份 SQL 文件夹 6. 遍历 SQL 文件夹 - 获取当前文件的文件名 - 计算当前文件的 MD5 值 - 检查并执行 SQL 文件 - 检查当前文件名是否存在于数据库中 - 比较计算的 MD5 值与数据库中存储的 MD5 值 - 执行 SQL 文件并存储执行结果和 MD5 记录 7. 输出执行结果统计