MySQL:执行 SQL 脚本的几种方式

调用 SQL 脚本属于数据库维护过程中再普通不过的工作了,这里介绍几种调用 SQL 脚本的方法。

方法一: 通过 Linux 重定向

一个 sql 脚本

1
2
3
[mysql@db1 tf]$ cat 1.sql  
select now();
select user();

调用 1.sql 脚本

1
2
3
4
5
[mysql@db1 tf]$ mysql <  1.sql  
now()
2014-12-18 17:27:47
user()
root@localhost

设置输出格式

1
2
3
4
5
6
7
8
9
10
11
[mysql@db1 tf]$ mysql -t <  1.sql  
+---------------------+
| now() |
+---------------------+
| 2014-12-18 17:27:57 |
+---------------------+
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+

备注: -t 表示以 table 格式输出。如果脚本在执行过程中遇到错误则中止; 如果想让出错后的 sql 继续执行,则需加上 –force 参数。

方法二: 通过 “. “ 或者 “souce “ 命令调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[mysql@db1 ~]$ mysql  
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1579
Server version: 5.6.20-log Source distribution

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

root@localhost:(none)>. /home/mysql/script/tf/1.sql
+---------------------+
| now() |
+---------------------+
| 2014-12-18 17:33:37 |
+---------------------+
1 row in set (0.00 sec)

+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

root@localhost:(none)>source /home/mysql/script/tf/1.sql
+---------------------+
| now() |
+---------------------+
| 2014-12-18 17:34:13 |
+---------------------+
1 row in set (0.00 sec)

+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

方法三: 使用 -e 参数

1
2
3
4
5
6
7
8
9
10
11
[mysql@db1 ~]$ mysql -e "select now();select user();"  
+---------------------+
| now() |
+---------------------+
| 2014-12-18 17:34:58 |
+---------------------+
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+

输出日志

1
2
3
4
[mysql@db1 tf]$ cat insert.sql  
insert into test_call(id,name) values(1,'a');
insert into test_call(id,name) values(2,'a');
insert into test_call(id,name) values(3,'a');

无日志调用方式

1
[mysql@db1 tf]$ mysql francs < insert.sql

将日志打出

[mysql@db1 tf]$ mysql -vvv francs < insert.sql   
--------------  
insert into test_call(id,name) values(1,'a')  
--------------  

Query OK,  1 row affected (0.00 sec)  

--------------  
insert into test_call(id,name) values(2,'a')  
--------------  

Query OK,  1 row affected (0.01 sec)  

--------------  
insert into test_call(id,name) values(3,'a')  
--------------  

Query OK,  1 row affected (0.01 sec)  

Bye

参考

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/239613.html

(0)
上一篇 2022年2月12日
下一篇 2022年2月12日

相关推荐

发表回复

登录后才能评论