步驟:(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的編碼一致~