首发于 技术博客
【实践-MySQL】在Linux服务器中后台执行sql脚本导入大量数据

【实践-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表示使用指定数据库