你要变成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);
}