Linux数据库:mysql下如何执行sql脚本_第2页

Linux数据库:mysql下如何执行sql脚本_第2页,第1张

同样,可以手动执行sql文件,具体步骤如下:
1、使用root帐户登录到MySQL服务器;
2、执行source命令:
mysql>
source
c:/testsql
注意:文件路径中建议使用“/”,如果使用“\”,要首先进行转义即“\\”,否则可能会出现错误。
另外还有一个load命令可以批量插入数据,但是这个对文件中数据格式的要求比较严格,否则容易出现错误,很少使用。
mysql
查看所有用户的语句
输入指令select
user();
例:(项目来源:尚学堂)struts_training_itemmgrsql内容如下:
Sql代码
DROP
TABLE
t_items;
DROP
TABLE
t_data_dict;
CREATE
TABLE
t_items
(
item_no
varchar(20)
not
null
key,
item_name
varchar(20)
not
null,
spec
varchar(20),
pattern
varchar(10),
category
varchar(20),
unit
char(20)
);
CREATE
TABLE
t_data_dict
(
id
varchar(5)
not
null
key,
category
varchar(20),
name
varchar(30)
);
#
t_data_dict的初始化数据
INSERT
INTO
t_data_dict(id,category,name)
values('B01','item_category','精通Spring2X
Java
Web开发');
INSERT
INTO
t_data_dict(id,category,name)
values('B02','item_category','Java语言与面向对象程序设计');
INSERT
INTO
t_data_dict(id,category,name)
values('B03','item_category','2B铅笔');
INSERT
INTO
t_data_dict(id,category,name)
values('B04','item_category','HOTROCK
notebook');
INSERT
INTO
t_data_dict(id,category,name)
values('C01','item_unit','本');
INSERT
INTO
t_data_dict(id,category,name)
values('C02','item_unit','支');
INSERT
INTO
t_data_dict(id,category,name)
values('C03','item_unit','箱');

使用sqlcmd可以在批处理脚本中执行SQL。虽然这个命令的参数很多,但幸运的是,我们不需要全部理解,在这里简要介绍以下几个:\x0d\{ -U login_id [ -P password ] } | _E trusted connection }] 如果指定了-E就不需要指定用户名密码,当然指定了用户名密码就不用-E了;\x0d\-S server_name [ \ instance_name ] 数据库服务器,如果不在本机的话必须指定;\x0d\-d db_name 数据库名字,必须的;\x0d\[ -i input_file ] [ -o output_file ] sql存在文件里的话用-i,输出到文件用-o;\x0d\[ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 输入是简单的sql,不用文件,推荐用-Q,如果你执行完sqlcmd还需要执行别的动作的话;\x0d\[ -W remove trailing spaces ] 删除多余的空格,结果会更紧凑。\x0d\当我们在真正的脚本中执行sql时,通常需要传入和输出变量。\x0d\传入变量比较简单,如下所示:\x0d\sqlcmd -d test -Q "select from dboInvestment where investor=$(x)" -v x='IBM' -W\x0d\这个语句从test数据库的Investment表中选出investor等于x的所有行,注意到变量x被包含在${}中。\x0d\然后用-v定义了x的值,'IBM'。\x0d\-W确定输出的结果不包含多余的空格。\x0d\x的值如果没有在sqlcmd中设定,系统会试图从别的地方去寻找,可能的地方包括,系统环境变量,用户环境变量,以及用在sqlcmd之前用set设定的变量值。\x0d\如果你的数据里确实包含${},那么你并不希望进行变量的替换,使用-x选项可以禁止变量的替换。\x0d\有些时候,你还希望能获得sql执行结果并保存到变量中。比如你们的日志系统每天都在产生日志文件,你要执行一个脚本来处理这些日志文件并存到数据库中。在处理之前,你必须读取数据库以确定上次处理到那一天了。你期望这样能解决你的问题:\x0d\sqlcmd -d test -Q "select ${x}=max(date) from dbologDates " -W\x0d\但这样并不工作。因为sqlcmd并不提供输出变量。\x0d\不过你可以这样做:\x0d\sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbologDates;print @x; " -W\x0d\这样你就可以得到一个干干净净的数字,而不会包含列名和其他信息。\x0d\接着你将上述结果导入到一个文件里:\x0d\sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbologDates;print @x; " -W 1txt\x0d\现在到了最关键的一步,将文件的内容写入到变量里:\x0d\set /P myvar=回答于 2022-11-16


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10789161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存