步骤:(1) 创建一个批处理文件:打开记事本,创建数据库连接信息(例如,server name,username,password,databasename等)以及要执行的*.sql脚本名称。具体语法参考下文"osql 实用工具" 。 将文件的扩展名改为.bat 并保存。
示例1:指定待执行sql 文件的相对路径
osql -S admin\admin -U sa -P sa -d TestDB -i c:\test.sql
pause
示例2: 待执行文件与bat文件在同一个目录,指定相对路径
set localdir=%~dp0
osql -S (local) -U sa -P sa -d Test -i %localdir%\test1.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test2.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test3.sql
pause
(2) 创建需要执行的sql 脚本, test.sql,test2.sql 和test3.sql, 并放在步骤(1)示例1中指定的位置。本例为c:\ 根目录。如果用示例2,将待执行的sql和bat文件放在同一个目录下。
(3) 双击*.bat 文件并查看运行结果。
‘贰’ 什么是SQL脚本
SQL脚本:生成数据库项目时,预先部署脚本、数据库对象定义和后期部署脚本合并为一个生成脚本。
只能指定一个预先部署脚本和一个后期部署脚本,但可在预先部署脚本和后期部署脚本中包含其他脚本。
用于创建数据库对象的语句的集合。Transact-SQL脚本保存为文件,文件名通常以 .sql结尾。
具体使用环境包含:MY-SQL,SQLServer,oracle。
数据库脚本包含:存储过程[Procere],事务[transaction]等,索引[Index],触发器[Trigger],函数[Function]等。
使用脚本的好处:可以提高数据访问的效率,并进行相关的数据处理。
(2)sql脚本编码扩展阅读
SQL具有数据定义、数据操纵和数据控制。
1、SQL数据定义功能:能够定义数据库的三级模式结构,即外模式、全局模式和内模式结构。在SQL中,外模式有叫做视图(View),全局模式简称模式( Schema),内模式由系统根据数据库模式自动实现,一般无需用户过问。
2、SQL数据操纵功能:包括对基本表和视图的数据插入、删除和修改,特别是具有很强的数据查询功能。
3、SQL的数据控制功能:主要是对用户的访问权限加以控制,以保证系统的安全性。
‘叁’ mysql文件保存的sql脚本打开之后所有中文字符显示乱码怎么解决
乱码多半是一些 插入的数据信息。。这些乱码可以直接使用。。或者改下数据库的编码格式,UTF-8 或GBK等等。只要编码格式一致一般不会出现乱码。
‘肆’ oracle sql developer的脚本出现乱码
说明脚本的编码格式和数据库的编码格式不一致,可以通过修改数据库编码格式的方式来实现:
;改完编码后执行
sql>conn/assysdba;
sql>shutdownimmediate;
databaseclosed.
databasedismounted.
oracleinstanceshutdown.
sql>startupmount;
oracleinstancestarted.
fixedsize452044bytes
variablesize109051904bytes
databasebuffers25165824bytes
redobuffers667648bytes
databasemounted.
sql>;
systemaltered.
sql>altersystemsetjob_queue_processes=0;
systemaltered.
sql>altersystemsetaq_tm_processes=0;
systemaltered.
sql>alterdatabaseopen;
databasealtered.
sql>_useUTF-8;
sql>shutdownimmediate;
sql>startup;
查看数据库编码格式:select userenv('language') from al;
再就是如果数据库格式不支持中文一般也会乱码,也通过上面的方式解决,如果数据库已经是支持中文的格式了,那么就只能想办法修改脚本格式了。
‘伍’ 怎么判断sql文件的编码格式
文件的字符集在Windows下有两种,一种是ANSI,一种Unicode。
对于Unicode,Windows支持了它的三种编码方式,一种是小尾编码(Unicode),一种是大尾编码(BigEndianUnicode),一种是UTF-8编码。
我们可以从文件的头部来区分一个文件是属于哪种编码。当头部开始的两个字节为 FF FE时,是Unicode的小尾编码;当头部的两个字节为FE FF时,是Unicode的大尾编码;当头部两个字节为EF BB时,是Unicode的UTF-8编码;当它不为这些时,则是ANSI编码。
按照如上所说,我们可以通过读取文件头的两个字节来判断文件的编码格式,代码如下(C#代码):
程序中System.Text.Encoding.Default是指操作系统的当前 ANSI 代码页的编码。
public System.Text.Encoding GetFileEncodeType(string filename){ System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.BinaryReader br = new System.IO.BinaryReader(fs); Byte[] buffer = br.ReadBytes(2); if(buffer[0]>=0xEF) { if(buffer[0]==0xEF && buffer[1]==0xBB) { return System.Text.Encoding.UTF8; } else if(buffer[0]==0xFE && buffer[1]==0xFF) { return System.Text.Encoding.BigEndianUnicode; } else if(buffer[0]==0xFF && buffer[1]==0xFE) { return System.Text.Encoding.Unicode; } else { return System.Text.Encoding.Default; } } else { return System.Text.Encoding.Default; }}
‘陆’ java读取执行SQL脚本文件出现部分中文乱码
1、你的数据库系统的编码不是utf-8
2、你insert进的表的编码不是utf-8
3、你的出现了乱码的字段的编码不是utf-8
确保第3条是utf-8即可,也可以追溯第2条,甚至上溯到第1条,
‘柒’ MYSQL命令行运行sql脚本问题,如图我已经修改ini文件且确认sql脚本编码是“UTF-8”字集为什么还是乱码
你的sql脚本语法不对,是不是用中文逗号了?
‘捌’ sql 创建数据库 创建表 脚本代码~只要代码
创建数据库的SQL语句:
create database stuDB
on primary -- 默认就属于primary文件组,可省略
(
/*--数据文件的具体描述--*/
name='stuDB_data', -- 主数据文件的逻辑名称
filename='D:\stuDB_data.mdf', -- 主数据文件的物理名称
size=5mb, --主数据文件的初始大小
maxsize=100mb, -- 主数据文件增长的最大值
filegrowth=15%--主数据文件的增长率
)
log on
(
/*--日志文件的具体描述,各参数含义同上--*/
name='stuDB_log',
filename='D:\stuDB_log.ldf',
size=2mb,
filegrowth=1mb
)
删除这个数据库,SQL Server将数据库的清单存放在master系统数据库的sysdatabases表中,只需要查看该表是否存在于该数据库中就可以
了,语句如下:
use master -- 设置当前数据库为master,以便访问sysdatabases表
go
if exists(select * from sysdatabases where name='stuDB')
drop database stuDB
go
创建表和删除表的SQL语句如下:
use StuDB
go
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks
create table stuMarks
(
ExamNo int identity(1,1) primary key,
stuNo char(6) not null,
writtenExam int not null,
LabExam int not null
)
go
-- 其中,列属性"identity(起始值,递增量)" 表示"ExamNo"列为自动编号, 也称为标识列
alter table 表名
add constraint 约束名 约束类型 具体的约束说明
alter table 表名
drop constraint 约束名
alter table stuMarks
add constraint UQ_stuNo Unique(stuNo)
alter table stuMarks
drop constraint UQ_stuNo
/*--添加SQL登录账户--*/
exec sp_addlogin 'xie', '123456' -- 账户名为xie,密码为123456
--删除xie账户名
exec sp_droplogin 'xie'
/*--在stuDB数据库中添加两个用户(必须存在)--*/
use stuDB
go
exec sp_grantdbaccess 'xie','123456'
go
-- 提示:SQL Server 中的dbo用户是具有在数据库中执行所有活动权限的用户,表示数据库的所有者(owner),一般来说,
-- 如果创建了某个数据库,就是该数据库的所有者,即dbo用户,dbo用户是一个比较特殊的数据库用户,无法删除,且此用
-- 户始终出现在每个数据库中
/* --给数据库用户授权-- */
-- 授权的语法如下
-- grant 权限 [on 表名] to 数据库用户
use stuDB
go
grant select,update,insert on stuMarks to xie
grant create table to xie
go
‘玖’ 如何编写健壮的SQL代码
现今只要是网络应用,都必须有数据库, 而这些应用的瓶颈往往也都是数据库的处理数据的效率.所以SQL讲究的是高效.
SQL准确点不是代码,只是数据库的执行脚本;所以本身不会像编程语言那般复杂, 没所谓健壮不健壮; 但是不管代码或脚本, 都会有编写规范, 目的就是让人容易看懂. 所以我介绍一下编写规范吧
不推荐:
select a.col1,b.col2,sum(b.col3) form table1 a inner join table2 b on a.col1=b.col2 where b.col2='aa' group by a.col1,b.col2 order by b.col2
上面的语句较难阅读
推荐:
select
a.col1
--,b.col2
,sum(b.col3)
form table1 a
inner join table2 b on a.col1=b.col1
where b.col2='aa'
group by a.col1,b.col2
order by b.col2
上面语句将sql语句的各部分分开,以便阅读 select字段, 操作表, where条件, 分组语句,排序语句,让人一目了然; 此外, 每个字段另起一行并逗号在前,为了方便随意注释字段或添加字段.
sql易学难精, 简单来说无非就是增删改查等,但是要理解sql的运行原理,并对其优化就不简单了.这涉及的知识很深也很多,不是随随便便就可以回答清楚的.想深入了解的可网上看技术博客.
‘拾’ linux执行db2数据库执行sql脚本为什么乱码
检查一下sql文件的编码是否和db2的编码一致~