你要變成mysql下可以運行的腳本?
那隻能去詳細修改SQL了,畢竟語法大不一樣,根據你上面的轉換為mysql下的sql如下:
CREATE TABLE `Outbooks`(
`Obid` int NOT NULL,
`Ouid` int NOT NULL,
`Obprice` decimal(15,4) NOT NULL,
`Obotime` timestamp NOT NULL DEFAULT current_timestamp,
`ObRenttime` int NOT NULL,
`Obstate` char(2) NOT NULL DEFAULT '否',
`Obkeep` char(2) NULL DEFAULT '否'
);
CREATE TABLE `Books`(
`Bid` int auto_increment NOT NULL,
`Bname` varchar(20) NOT NULL,
`Bpreview` varchar(50) NOT NULL,
`Bsort` varchar(15) NOT NULL,
`Bpublisher` varchar(15) NOT NULL,
`Bsum` int NOT NULL,
`Bprice` decimal(15,4) NOT NULL,
`Bauthor` varchar(20) NOT NULL,
`Bregtime` timestamp NOT NULL DEFAULT current_timestamp,
CONSTRAINT `PK_Books` PRIMARY KEY
(
`Bid`
)
);
CREATE TABLE `Admin`(
`Aname` varchar(20) NOT NULL,
`Apwd` varchar(20) NOT NULL
);
CREATE TABLE `Users`(
`Uid` int auto_increment NOT NULL primary key,
`Uname` varchar(20) NOT NULL,
`Usex` char(2) NOT NULL,
`Uphone` varchar(25) NOT NULL,
`Uaddress` varchar(30) NOT NULL,
`Uyue` decimal(15,4) NOT NULL,
`Uregtime` timestamp NOT NULL DEFAULT current_timestamp,
`Ustate` char(2) NOT NULL DEFAULT '否'
);
2. 在SQL中如何將查詢結果直接導出為EXCEL表格
SQL Server有一些工具可用來導出和導入數據。這些簡單的工具,例如T-SQL的BULK INSERT語句,或者是BCP工具,都可以將數據以純文本文件的形式傳輸。如果需要處理任何一種其他類型的文件的導入導出,則我們必須使用DTS設計器或者DTS向導構建一個DTS包。最終生成的DTS包是一個我們必須測試、維護和操作的獨立的對象。而傳輸數據的工作則變得更加復雜,即使我們只是想要將一個簡單的Excel文件傳輸到文件系統中。
這里,我建議使用一個簡單,但是很有用的T-SQL 存儲程序,它可以通過使用鏈接伺服器(linked server)技術將數據導出到Excel 中。
為了實現導出,你必須首先創建一個空的有固定名字的Excel文件,並將其放置在伺服器上。我把它命名為Empty.xls,並放置在c:temp的目錄下。這個文件不會被刪除,並且在裝入數據之前,作為目標Excel文件的模板使用。
Empty.xls文件被構建的時候,只含有一個工作頁,名為ExcelTable,其中的第一行(僅有的一行)包含如下字母: A,B,C,...Z。這些字母可作為Excel表的列名稱。這意味著在一個查詢中,我們可以導出26個列。(給定的存儲程序代碼可被修改,以支持結果集中含有更多的列的情況。只需要在Excel模板中簡單地書寫F1, F2 ,F3...,然後更改程序中相應列的列表即可反映出變化了。)
sp_write2Excel是一個T-SQL存儲過程,它獲取目標Excel文件的名字和路徑,結果集中列的數量,以及T-SQL查詢。在查詢中應該使用轉換函數將所有的非字元串數據導入列中,因為最終的Excel單元中數據實際上都是字元串格式的。
這個過程將empty.xls模板文件拷貝到新的目標Excel文件中。然後它再構建一個鏈接伺服器到剛才的文件中,並使用動態的T-SQL來構建這個Excel文件,並且使用插入/選擇語句來將數據寫入其中。
以下是程序代碼:
Create proc sp_write2Excel (@fileName varchar(100),
@NumOfColumns tinyint,
@query varchar(200))
as
begin
declare @dosStmt varchar(200)
declare @tsqlStmt varchar(500)
declare @colList varchar(200)
declare @charInd tinyint
set nocount on
-- 構建列的列表 A,B,C ...
-- 直到達到列的數量.
set @charInd=0
set @colList = 'A'
while @charInd < @NumOfColumns - 1
begin
set @charInd = @charInd + 1
set @colList = @colList + ',' + char(65 + @charInd)
end
-- 創建一個空的Excel 文件作為目標文件,通過拷貝模板Excel 文件來命名
set @dosStmt = ' c:tempempty.xls ' + @fileName
exec master..xp_cmdshell @dosStmt
-- 創建一個「臨時」的鏈接伺服器到剛才的文件中,以用於「導出」數據
EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
@fileName,
NULL,
'Excel 5.0'
-- 構建一個T-SQL 語句,用於實際導出查詢結果
-- 到目標鏈接伺服器上的表中
set @tsqlStmt = 'Insert ExcelSource...[ExcelTable$] ' + ' ( ' + @colList + ' ) '+ @query
print @tsqlStmt
-- 執行動態的 TSQL語句
exec (@tsqlStmt)
-- 刪除鏈接伺服器
EXEC sp_dropserver 'ExcelSource'
set nocount off
end
GO
程序使用實例:
Use master
go
exec sp_write2Excel
--目標excel文件
'c:tempNorthProcts.xls' ,
-- 結果中列的數量
3,
-- 將要導出結果的查詢
'select convert(varchar(10),ProctId),
ProctName,
Convert (varchar(20),UnitPrice) from Northwind..Procts'
結論,這個程序可作為一個通用的工具將數據導出到Excel工作頁中,而BCP工具則只能將數據導出到文本文件中。
我們可以使用這個程序來代替DTS包設計器,以及DTS向導,每當需要調用這樣的動作的時候,都可以用它將數據導出到excel 文件中。
3. 怎麼把SQL中'lk'資料庫中的'人員表'中的部分數據(假如是姓王的數據)導出至excel(或類excel)中
ACCESS有兩種方法可以導出到excel,不論是2003還是2010你都能直接在表格右鍵菜單中(或者菜單選項中)看到導出,導出到excel選項,access自帶一個report功能,支持通過查詢的日期范圍等導出一個查詢結果(實際上說簡單點就是,直接導出一個表(包括一個查詢)由於功能簡單沒什麼能設置的,所以你希望導出什麼內容,就首先想辦法創建這個內容的查詢出來,然後直接導出查詢即可),同時可以通過錄制宏來實現半自動的導出查詢到excel(宏有導出到excel的向導)
第二種方法就是不考慮access自己的直接導出功能,而是要創造出完全自定義的導出,那麼自然石通過VBA,這是我以前寫的一個手工單程序,摘錄一段導出到excel的:
Private Sub Command118_Click() '導出
On Error GoTo Err_Command118_Click
Set myexcel = CreateObject("Excel.Application") 『創建excel這些過程是看不到的放心
Set ob = myexcel.Application.workbooks.Add '添加一個sheet
myexcel.Application.Visible = True
Me.proctsub.Form.Recordset.MoveFirst
With myexcel.Application.ActiveSheet '輸出產品列表
ob.worksheets(1).range("A19").fromrecordset Me.proctsub.Form.Recordset
For i = 19 To 200
If .range("B" & i) = "" Then
Exit For
Else
.range("A" & i).Clear
End If
Next
.range("D19:F" & i).Cut Destination:=.range("F19:h" & i) '調整列表
.range("C4") = [取貨倉庫/公司].Value 』這些都是欄位
.range("C5") = 取貨地址.Value
.range("C6") = 申請人.Value
.range("C7") = 申請人聯系電話.Value
.range("G5") = 手工單號.Value
.range("C8") = 是否返回倉庫.Value
.range("C9") = 預計返回時間.Value
.range("C11") = [收貨人(公司)].Value
.range("C12") = 聯系人.Value
.range("G12") = 收貨人聯系電話.Value
.range("C13") = 地址.Value
.range("C14") = 要求到貨時間.Value
.range("G14") = 運輸方式.Value
.range("C16") = 申請部門.Value
.range("B" & i + 3) = 申請人要求.Value
.range("F" & i + 3) = 備注.Value
.range("C" & i + 7) = 部門申請人.Value
.range("C" & i + 8) = 申請日期.Value
.range("G" & i + 7) = 部門批准人.Value
.range("G" & i + 8) = 批准日期.Value
.range("C" & i + 10) = 供應鏈部確認人.Value
.range("G" & i + 10) = 貨物簽收人.Value
.range("C" & i + 11) = 承辦日期.Value
.range("G" & i + 11) = 簽收日期.Value
.range("G" & i) = 總重量.Value
For k = 18 To i
.range("C" & k & ":" & "E" & k).merge
.range("H" & k & ":" & "i" & k).merge
Next
End With
'*****************************格式化*************
Call formatTAB 『這是格式化excel表格,比如顏色,字體,單元格尺寸大小等等,為了創造出完全符合自己希望的報表,這是個自定義函數formatTAB你需要嗎?需要也可以分享出來
Call SetLine 』同上,這是給一些地方劃線,畫邊框,這個excel最終會有標題有表格等等
'*****************************************
myexcel.Application.CutCopyMode = False
Set ob = Nothing
Set myexcel = Nothing
Me.Check169.Value = True
Exit_Command118_Click:
Exit Sub
Err_Command118_Click:
MsgBox Err.Description
Resume Exit_Command118_Click
End Sub 『完成後就會打開一個導出的結果
順便,如果你懶得錄制宏但是又想用access自己的導出,在vba中可以直接:
Private Sub Command124_Click()
On Error GoTo Err_Command124_Click
Dim stDocName As String
stDocName = "pro" 』創建的一個自定義的查詢的名字,這個查詢表將會被導出
DoCmd.OutputTo acReport, stDocName 『導出的命令
Exit_Command124_Click:
Exit Sub
Err_Command124_Click:
MsgBox Err.Description
Resume Exit_Command124_Click
End Sub
4. 如何將本地資料庫備份到另一台伺服器上
1.要在其他電腦上備份本地,所以要在其他電腦上共享一個文件夾,並將文件夾映射到伺服器上(此處將另一伺服器的共享文件夾映射為Z:)
net share test = D:\temp
exec master..xp_cmdshell 'net use z: \\server\test 密碼 /user:administrator'
(也可以直接在windows環境下操作)
2.開始備份資料庫
backup database Northwind to disk = 'z:\\Northwind_0101.bak'
(也可以在企業管理器里進行備份,要注意選對路徑)
3.出於安全考慮,可以在執行完備份操作後,將共享刪除
exec master..xp_cmdshell 'net use z: /delete' (首先刪除映射)
net share test /delete (取消共享)
5. 如何把遠程的oracle資料庫導出到本地
你把遠程資料庫導出之後,通過網路傳到你本機,然後你從本機導入到本機機器資料庫上,這樣就可以了。
6. 怎麼講oracle開發庫的導出表 導入測試庫中
建議你使用oracle資料庫管理軟體OB,直接復制、粘貼,數據導出為excel表,也只需點一下,指定路徑即可完成.
7. 用java實現 將oracle資料庫表中的文件取出來到本地
給你一段讀圖片的代碼,其他的DOC什麼的其實就是文件的後綴名改下而已。BLOB欄位其實就是用2進制流保存了文件,你用java的IO流去讀取然後寫到FILE里,給個對應的後綴就好了。
//存入資料庫
Connectionconn=null;
ResultSetrs=null;
Statementstmt=null;
DBConnectionManagerconnMgr=null;
try
{
Stringinsertsql="insertintoimage(id,pic)values(18,empty_blob())";//首先插入一個空的Blob類型
StringupdateSql="selectfujiannrfromT_ZT_MYZJ_MYCJwhereid=18forupdate";
connMgr=DBConnectionManager.getInstance();
conn=connMgr.getConnection();
conn.setAutoCommit(false);
OutputStreamos=null;
stmt=conn.createStatement();
stmt.executeUpdate(insertsql);
rs=stmt.executeQuery(updateSql);
if(rs.next())
{
oracle.sql.BLOBblob=(oracle.sql.BLOB)rs.getBlob("fujiannr");
os=blob.getBinaryOutputStream();
InputStreamis1=newFileInputStream("c:\1.png");
inti=0;
while((i=is1.read())!=-1){
os.write(i);
}
}
os.flush();
os.close();
}
catch(Exceptione)
{
e.printStackTrace();
}
finally{
closeAll(rs,stmt,conn);
}
//失放資源
ClassLoadercl=this.getClass().getClassLoader();
InputStreampro=cl.getResourceAsStream("\config.properties");
PropertiesdbProps=newProperties();
try{
dbProps.load(pro);
}catch(Exceptione){
}
StringdriverClasses=dbProps.getProperty("dbDriver");
connMgr.freeConnection(driverClasses,conn);
//從資料庫中讀取圖片
Connectionconn=null;
ResultSetrs=null;
Statementstmt=null;
InputStreamissgg=null;
DBConnectionManagerconnMgr=null;
bytebs[]=null;
try
{
connMgr=DBConnectionManager.getInstance();
conn=connMgr.getConnection();
conn.setAutoCommit(false);
stmt=conn.createStatement();
Stringstr="selectpicfromimagewhereid=18";
rs=stmt.executeQuery(str);
rs.next();
Blobob=null;
ob=rs.getBlob(1);
longsize=ob.length();
bs=ob.getBytes(1,(int)size);
Filefile=newFile("c:\"+"image.png");
if(!file.exists())
{
file.createNewFile();//如果文件不存在,則創建
}
FileOutputStreamfos=newFileOutputStream(file);
if(data.length>0)
{
fos.write(bs,0,bs.length);
}
else
{
//while((size=in.read(bs))!=-1)
//{
///fos.write(bs,0,size);
//}
//in.close();
}
fos.close();
}
catch(Exceptione)
{
e.printStackTrace();
}
finally{
closeAll(rs,stmt,conn);
}