Linux单库单表利用存储过程造MySQL数据脚本 原创 数据库 2022年5月9日 18:05 夏至未至 951 当前内容 6354 字,在路上,马上到,马上到 ### 目录 [TOC] ### 脚本说明 1. 利用数据库自身的存储过程功能插入数据,比insert语句快得多,当前验证只在单库单表。 2. 表的字段插入文本文件或者图片文件,也是为了更快插入数据。 3. 如果脚本运行报语法错误,请参照此文处理:[Linux运行脚本报错](https://www.codecomeon.com/posts/208/ "Linux运行脚本报错") ### 脚本使用 #### 前置检查 由于是需要插入文件,需要配置`mysql`文件导入功能,[请移步这里](https://www.codecomeon.com/posts/48/ "请移步这里")。配置完成后,用如下方式验证: mysql> select load_file("/mysql_load_file/codecomeon.jpg"); 只要输出不是 NULL,就证明配置成功。 拿当前测试环境为例,我脚本和图片都放在如下路径: [root@localhost mysql_load_file]# pwd /mysql_load_file [root@localhost mysql_load_file]# 配置导入文件后,查询可得: mysql> show global variables like '%secure%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | require_secure_transport | OFF | | secure_auth | ON | | secure_file_priv | /mysql_load_file/ | +--------------------------+--------+ 3 rows in set (0.13 sec) mysql> 至此环境配置完成。 #### 创建脚本 复制文末脚本内容,创建脚本,这里假设为:`createbigdata.sh`,其中 `codecomeon.jpg` 为默认插入的图片(也可以换成文本文件,大小更好控制),与脚本放在同级目录即可,以下提供图片源,以供下载使用:  [root@localhost mysql_load_file]# ll total 44 -rw-r--r--. 1 root root 33736 Mar 3 04:19 codecomeon.jpg -rw-r--r--. 1 root root 6724 Mar 3 03:20 createbigdata.sh [root@localhost mysql_load_file]# 给最高权限 [root@localhost mysql_load_file]# chmod 777 /mysql_load_file/ -R 如果因为拷贝导致编码格式错乱,脚本运行报错,试试以下命令,改变文件编码: :set ff=unix > 需要在 vi 或 vim 在 查看模式下输入需要在 vi 或 vim 在 查看模式下输入。 #### 脚本配置 只需要简单配置如下两个类型的内容,就能快速使用脚本: #========================================================# #------------------1. 连接数据库参数配置-----------------# # 数据库实例用户 DB_USER_NAME=root # 数据库实例密码 DB_PASSWORD=123456 # 数据库实例端口号 DB_PORT=3306 # 据库实例IP DB_HOST=127.0.0.1 #-------------------2. 造数据参数配置---------------------# # 单表插多少行数据(默认插500行) TB_LINE_NUMBER=500 # 数据库默认名称:codedb DB_BASE_NAME=codedb # 库下表名称 BASE_TB_NAME=code_tb # 表中插入的文件名(可以是图片、文本等,文件需和当前脚本在同级目录,默认为 codecomeon.jpg) LOAD_FILE_NAME=codecomeon.jpg #------------------自定义配置结束,其他勿动---------------# #=========================================================# 1. 配置连接数据库的用户名、密码、端口和IP(这些参数,最好提前都能验证其正确性) 2. 配置库名,表名,以及表下,你想要插入多少行数据 #### 执行脚本 [root@localhost mysql]# ./createbigdata.sh ******************************* 参数确认: 数据库用户=root 数据库密码=123456 数据库端口号=3306 数据库IP=127.0.0.1 ******************************* 数据库名=codedb 库下表名=code_tb ******************************* Are You Sure? [y/n] y Yes 正在插数据到表:codedb.code_tb ============================= 插数据完成,耗时:2 秒 [root@localhost mysql]# ### 测试结果 [root@localhost mysql]# mysql -uroot -p123456 -P3306 -h127.0.0.1 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 19 Server version: 8.0.29 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | codedb | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) MySQL [(none)]> use codedb; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MySQL [codedb]> show tables; +------------------+ | Tables_in_codedb | +------------------+ | code_tb | +------------------+ 1 row in set (0.01 sec) MySQL [codedb]> select count(*) from code_tb; +----------+ | count(*) | +----------+ | 500 | +----------+ 1 row in set (0.00 sec) MySQL [codedb]> ### 脚本源码 #!/bin/bash #********************************************************* #* Author : codecomeon #* Email : codecomeon@qq.com #* Site: : https://www.codecomeon.com/ #* Last modified : 2022-02-15 : 13:10:15 #* Description : Linux单库单表利用存储过程造MySQL数据脚本 #* ******************************************************* CURRENT_PATH=$(cd "$(dirname "$0")"; pwd) #========================================================# #------------------1. 连接数据库参数配置-----------------# # 数据库实例用户 DB_USER_NAME=root # 数据库实例密码 DB_PASSWORD=123456 # 数据库实例端口号 DB_PORT=3306 # 据库实例IP DB_HOST=127.0.0.1 #-------------------2. 造数据参数配置---------------------# # 单表插多少行数据(默认插500行) TB_LINE_NUMBER=500 # 数据库默认名称:codedb DB_BASE_NAME=codedb # 库下表名称 BASE_TB_NAME=code_tb # 表中插入的文件名(可以是图片、文本等,文件需和当前脚本在同级目录,默认为 codecomeon.jpg) LOAD_FILE_NAME=codecomeon.jpg #------------------自定义配置结束,其他勿动---------------# #=========================================================# CUSER=$(id |cut -d"(" -f2 | cut -d ")" -f1) if [ "$CUSER" != "root" ]; then echo "Permission: Please switch to the root user" exit 1 fi echo "*******************************" echo -e "\e[32m参数确认:\e[0m" echo -e "数据库用户=\e[33m$DB_USER_NAME\e[0m" echo -e "数据库密码=\e[33m$DB_PASSWORD\e[0m" echo -e "数据库端口号=\e[33m$DB_PORT\e[0m" echo -e "数据库IP=\e[33m$DB_HOST\e[0m" echo "*******************************" echo -e "数据库名=\e[33m$DB_BASE_NAME\e[0m" echo -e "库下表名=\e[33m$BASE_TB_NAME\e[0m" echo "*******************************" read -r -p "Are You Sure? [y/n] " input case $input in [yY][eE][sS]|[yY]) echo "Yes" ;; [nN][oO]|[nN]) exit 0 ;; *) echo "Invalid input..." exit 1 ;; esac startTime=`date +%Y%m%d-%H:%M:%S` startTime_s=`date +%s` MY_SQL_LOG=$CURRENT_PATH/mysqlmakebigdata.log if [ ! -f "$ ¥2.00 解锁全文 下载资源 本文标题: Linux单库单表利用存储过程造MySQL数据脚本 本文作者: 夏至未至 发布时间: 2022年5月9日 18:05 最近更新: 2022年8月16日 14:50 原文链接: 许可协议: 署名-非商业性-禁止演绎 4.0 国际(CC BY-NC-ND 4.0) 请按协议转载并保留原文链接及作者 MySQL(28) Linux(24) 上一个 MySQL查看服务器和客户端版本(他们不同) 下一个 容器版MySQL安装和配置(Docker) 当前文章评论暂未开放,请移步至留言处留言。