【实践-MySQL】在Linux服务器中后台执行sql脚本导入大量数据
在服务器中后台执行sql脚本
上传文件
将 数据库结构ddl.sql文件和数据data.sql文件都上传到服务器的/home目录中。 ddl.sql文件:
/*!40101 SET NAMES utf8 */;
CREATE DATABASE `db_test`;
use db_test;
CREATE TABLE `table_test` (
`id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '主键',
`create_time` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`update_time` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测试表';
data.sql文件:
/*!40101 SET NAMES utf8 */;
insert into table_test (id) VALUES (1);
前台执行
创建数据库 和 表
# 登陆数据库
# -u表示用户名、-h表示ip地址、-P表示端口、-p表示密码登陆
mysql -u root -h 127.0.0.1 -P 3307 -p
# 输入密码
123456
# 执行sql文件
source /home/ddl.sql
导入数据
# 登陆数据库
# -u表示用户名、-h表示ip地址、-P表示端口、-p表示密码登陆
mysql -u root -h 127.0.0.1 -P 3307 -p
# 输入密码
123456
# 执行sql文件
source /home/data.sql
后台执行
注意:后台执行有个问题是,如果sql文件中的语句执行出现报错,则会停止,不会继续执行后面的sql语句。这里有个坑!!!
创建数据库 和 表
准备脚本文件,在Linux控制台中执行下面的命令
# 创建脚本文件
vim importddl.sh
# 进入vim编辑器,按i进入编辑模式,输入如下命令
# -u表示用户名、-h表示ip地址、-P表示端口、
# -p表示密码(注意,-p和密码之间不能用空格隔开)
# <ddl.sql表示登陆数据库之后,执行与脚本同级目录下的ddl.sql文件,如果不是请使用绝对路径
mysql -u root -h 127.0.0.1 -P 3307 -ptest@2022 <ddl.sql
# 退出编辑模式 Esc,保存并退出vim编辑器 :wq!
# 进入指定目录
cd /home/
给脚本文件添加权限
chmod u+x importddl.sh
用nohup命令执行脚本 一定要加“&”,才能脚本放到后台运行 nohup执行后系统会在控制台打印出命令执行的PID 然后nohup会默认在/home目录下创建日志文件nohup.out,可以方便查看
nohup ./importddl.sh &
根据PID使用ps命令可以查看脚本是否还在执行
ps -aux | grep 297042
正在执行中:
只有一行数据,执行结束:
导入数据
准备脚本文件
# 创建脚本文件
vim importdata.sh
# 进入vim编辑器,按i进入编辑模式,输入如下命令
# --database表示使用指定数据库