导入excel的存储过程
‘壹’ 在sqlserver中写好了存储过程,要在程序中定期的去执行存储过程,并将其结果导入到指定的excel文件中
sqlserver 有一个openrowset函数,可以把结果写入到指定到excel文件中。
insert into openrowset("驱动","连接字符串","执行的语句") select * from tablename。
具体的用法和去网络下,我用这个函数导出过dbf。效率非常高。但是写入的excel文件必须在sqlserver数据库服务器上面。
‘贰’ mysql sql语句导入excel
1.数据透视视图是处理Excel常用的手段,而应用数据透视视图的第一步就是导入数据,如本例中,表中有889167行数据,那么将这些数据导入Excel表中将是一个很漫长的过程,可以借助SQL语句选择性的导入数据,以此来提交数据加载的速度。
‘叁’ asp.net怎么导入excel 到3个表
用存储过程。
把数据拼写字符串拼成xml格式。
然后存储过程获取xml字符串导入数据
‘肆’ 怎么把excel表导入sql数据库啊具体点,谢谢
1、生成一个excel表
工作表名称:website
包含的列:spid,spname,spiniprice,spincextent,spnowprice,spimage,spbidnum,spauctype,spbaucdt,speaucdt,spstat,buyerid,sitename,siteurl
部分截图:
2、存储过程
--1、涉及到的表:wl_siteposition(网站位表),wl_comsite(竞价网站表),excel表(需要物理路径)
--2、功能:若网站位表不存在记录,则从excel表中导入;反之,把网站位表中的记录导入到竞价网站表,和 "把excel表中的数据导入数据库" 有关的数据库编程小帖士:
strong>SORT
SORT函数返回一数字的算术平方根。
--同时,清空网站位表,之后再把excel表中的数据导入到表wl_siteposition;
create procere wl_job_websiteauction as
declare @err1 int
declare @err2 int
declare @err3 int
declare @err4 int
declare @err5 int
declare @err6 int
set @err1 = 0
set @err2 = 0
set @err3 = 0
set @err4 = 0
set @err5 = 0
set @err6 = 0
set nocount on
--设置事务隔离级别
--set transaction isolation level serializable
--ole/db provider 不支持隔离层
begin tran --开始事务
--set xact_abort on --
if (select count(*) from wl_siteposition)>0
begin
--把数据从网站位表中导入到竞价网站表
truncate table wl_comsite --清空竞价网站表
set @err1 = @@error
--把数据从网站位表中导入到竞价网站表中
insert into wl_comsite(csitename,csiteurl,csitevdt,spid,buyerid)
select sitename,siteurl,dateadd(day,7,speaucdt) as csitevdt,spid,buyerid
from wl_siteposition order by spid
set @err2 = @@error
truncate table wl_siteposition--清空网站位表
set @err3 = @@error
--把数据从excel表导入到网站位表中
insert into wl_siteposition(spid,spname,spiniprice,spincextent,spnowprice,spimage,spbidnum,spauctype,spbaucdt,speaucdt,spstat,buyerid,sitename,siteurl)
select spid,spname,spiniprice,spincextent,spnowprice,spimage,spbidnum,spauctype,spbaucdt,speaucdt,spstat,buyerid,sitename,siteurl
from opendatasource('microsoft.jet.oledb.4.0','data source="d:\work\我傲\竞拍设计\websiteposition_data.xls";extended properties="excel 8.0";persist security info=false')...[website$]
set @err4 = @@error
end
else
begin
--把数据从excel表导入到网站位表中
insert into wl_siteposition(spid,spname,spiniprice,spincextent,spnowprice,spimage,spbidnum,spauctype,spbaucdt,speaucdt,spstat,buyerid,sitename,siteurl)
select spid,spname,spiniprice,spincextent,spnowprice,spimage,spbidnum,spauctype,spbaucdt,speaucdt,spstat,buyerid,sitename,siteurl
from opendatasource('microsoft.jet.oledb.4.0','data source="d:\work\我傲\竞拍设计\websiteposition_data.xls";extended properties="excel 8.0";persist security info=false')...[website$]
set @err5 = @@error
--把数据从网站位表中导入到竞价网站表中
insert into wl_comsite(csitename,csiteurl,csitevdt,spid,buyerid)
select sitename,siteurl,dateadd(day,7,speaucdt) as csitevdt,spid,buyerid
from wl_siteposition order by spid
set @err6 = @@error
end
if @err1=0 and @err2=0 and @err3=0 and @err4=0 and @err5=0 and @err6=0
commit tran
else
rollback tran
set nocount off
go
‘伍’ 如何在asp.net中实现将sqlserver数据库表的数据导入到excel中,希望在代码中生成Excel表并带有中文表头
用存储过程实现:直接调用存储过程就可以了。
导出表中的数据到Excel,包含字段名,文件为真正的Excel文件
,如果文件不存在,将自动创建文件
,如果表不存在,将自动创建表
基于通用性考虑,仅支持导出标准数据类型
/*--调用示例
p_exporttb @tbname='地区资料',@path='c:\',@fname='aa.xls'
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcere') = 1)
drop procere [dbo].[p_exporttb]
GO
create proc p_exporttb
@tbname sysname, --要导出的表名,注意只能是表名/视图名
@path nvarchar(1000), --文件存放目录
@fname nvarchar(250)='' --文件名,默认为表名
as
declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)
--参数检测
if isnull(@fname,'')='' set @fname=@tbname+'.xls'
--检查文件是否已经存在
if right(@path,1)<>'\' set @path=@path+'\'
create table #tb(a bit,b bit,c bit)
set @sql=@path+@fname
insert into #tb exec master..xp_fileexist @sql
--数据库创建语句
set @sql=@path+@fname
if exists(select 1 from #tb where a=1)
set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'
+';CREATE_DB="'+@sql+'";DBQ='+@sql
else
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES'
+';DATABASE='+@sql+'"'
--连接数据库
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err<>0 goto lberr
exec @err=sp_oamethod @obj,'open',null,@constr
if @err<>0 goto lberr
--创建表的SQL
select @sql='',@fdlist=''
select @fdlist=@fdlist+','+a.name
,@sql=@sql+',['+a.name+'] '
+case when b.name in('char','nchar','varchar','nvarchar') then
'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'
when b.name in('tynyint','int','bigint','tinyint') then 'int'
when b.name in('smalldatetime','datetime') then 'datetime'
when b.name in('money','smallmoney') then 'money'
else b.name end
FROM syscolumns a left join systypes b on a.xtype=b.xusertype
where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')
and object_id(@tbname)=id
select @sql='create table ['+@tbname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr
exec @err=sp_oadestroy @obj
--导入数据
set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES
;DATABASE='+@path+@fname+''',['+@tbname+'$])'
exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)
return
lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
lbexit:
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述
select @sql,@constr,@fdlist
go
‘陆’ Excel导入数据的存储过程出错, 怎么办
excel2007导入外部数据时出错了怎么办
1、查看出错在什么地方。
2、修改原始数据,使其符合导入标准。
3、再次导入。
‘柒’ 如何编写oracle存储过程读取excel数据导入数据库表
XLS格式的EXCEL文件是不能通过存储过程导入数据库的。
CSV格式的EXCEL文件可以使用UTL_FILE包将数据导入到
数据库的,但CSV文件必须存储在数据库服务器上。
‘捌’ 200分求一个EXCEL导入SQL的存储过程
示例
导入与追加
本文使用的示例 SQL 语句演示了“创建表”查询。该查询通过使用 SELECT...INTO...FROM 语法将 Excel 数据导入新的 SQL Server 表。如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用 INSERT INTO...SELECT...FROM 语法将这些语句转换成追加查询。
使用 DTS 或 SSIS
可以使用“SQL Server Data Transformation Services (DTS) 导入向导”或“SQL Server 导入和导出向导”将 Excel 数据导入到 SQL Server 表中。在逐步执行向导并选择 Excel 源表时,要记住附加美元符号 ($) 的 Excel 对象名称代表工作表(例如,Sheet1$),而没有美元符号的普通对象名称代表 Excel 指定的范围。
使用链接服务器
要简化查询,可以将 Excel 工作簿配置为 SQL Server 中的链接服务器。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
306397 (http://support.microsoft.com/kb/306397/EN-US/ ) 如何:结合 SQL Server 链接的服务器和分布式查询使用 Excel
下列代码将 Excel 链接服务器“EXCELLINK”上的 Customers 工作表数据导入新的名为 XLImport1 的 SQL Server 表:
SELECT * INTO XLImport1 FROM EXCELLINK...[Customers$]
还可以通过按照以下方式使用 OPENQUERY 以全通过方式对源数据执行查询:
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK,
'SELECT * FROM [Customers$]')
使用分布式查询
如果不想将对 Excel 工作簿的永久连接配置为链接服务器,可以通过使用 OPENDATASOURCE 或 OPENROWSET 函数为特定目的导入数据。下列代码示例也能将 Excel Customers 工作表数据导入新的 SQL Server 表:
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]
SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', [Customers$])
SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\test\xltest.xls', 'SELECT * FROM [Customers$]')
使用 ADO 和 SQLOLEDB
当通过使用 Microsoft OLE DB for SQL Server (SQLOLEDB) 在 ADO 应用程序中连接到 SQL Server 时,可以使用与“使用分布式查询” 一节中相同的“分布式查询”语法将 Excel 数据导入 SQL Server。
下列 Visual Basic 6.0 代码示例要求添加对 ActiveX 数据对象 (ADO) 的项目引用。此代码示例还演示了如何在 SQLOLEDB 连接上使用 OPENDATASOURCE 和 OPENROWSET。
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _
"Initial Catalog=<database>;User ID=<user>;Password=<password>"
'Import by using OPENDATASOURCE.
strSQL = "SELECT * INTO XLImport6 FROM " & _
"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
"'Data Source=C:\test\xltest.xls;" & _
"Extended Properties=Excel 8.0')...[Customers$]"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff
'Import by using OPENROWSET and object name.
strSQL = "SELECT * INTO XLImport7 FROM " & _
"OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
"'Excel 8.0;Database=C:\test\xltest.xls', " & _
"[Customers$])"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff
'Import by using OPENROWSET and SELECT query.
strSQL = "SELECT * INTO XLImport8 FROM " & _
"OPENROWSET('Microsoft.Jet.OLEDB.4.0', " & _
"'Excel 8.0;Database=C:\test\xltest.xls', " & _
"'SELECT * FROM [Customers$]')"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff
cn.Close
Set cn = Nothing
使用 ADO 和 Jet Provider
上一节中的示例使用 ADO 和 SQLOLEDB Provider 连接到从 Excel 到 SQL 导入的目标。也可以使用 OLE DB Provider for Jet 4.0 来连接到 Excel 源。
Jet 数据引擎可以通过使用具有三种不同格式的特殊语法来在 SQL 语句中引用外部数据库:
[Full path to Microsoft Access database].[Table Name]
[ISAM Name;ISAM Connection String].[Table Name]
[ODBC;ODBC Connection String].[Table Name]
本节使用第三种格式创建到目标 SQL Server 数据库的 ODBC 连接。可以使用 ODBC 数据源名称 (DSN) 或者 DSN-less 连接字符串:
DSN:
[odbc;DSN=<DSN name>;UID=<user>;PWD=<password>]
DSN-less:
[odbc;Driver={SQL Server};Server=<server>;Database=<database>;
UID=<user>;PWD=<password>]
下列 Visual Basic 6.0 代码示例要求添加对 ADO 的项目引用。此代码示例演示了如何使用 Jet 4.0 Provider 通过 ADO 连接将 Excel 数据导入到 SQL Server。
Dim cn As ADODB.Connection
Dim strSQL As String
Dim lngRecsAff As Long
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\test\xltestt.xls;" & _
"Extended Properties=Excel 8.0"
'Import by using Jet Provider.
strSQL = "SELECT * INTO [odbc;Driver={SQL Server};" & _
"Server=<server>;Database=<database>;" & _
"UID=<user>;PWD=<password>].XLImport9 " & _
"FROM [Customers$]"
Debug.Print strSQL
cn.Execute strSQL, lngRecsAff, adExecuteNoRecords
Debug.Print "Records affected: " & lngRecsAff
cn.Close
Set cn = Nothing
也可以通过使用该语法(Jet Provider 支持)将 Excel 数据导入其他 Microsoft Access 数据库、索引顺序存取方法 (ISAM)(“desktop”)数据库或 ODBC 数据库。
回到顶端
疑难解答
记住附加美元符号 ($) 的 Excel 对象名称代表工作表(例如:Sheet1$),而普通对象名称代表 Excel 指定的范围。
在某些环境中,特别是用表名称取代 SELECT 查询指派 EXCEL 源数据时,目标 SQL Server 表中的列会按照字母顺序重排。有关 Jet Provider 中存在的这一问题的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
299484 (http://support.microsoft.com/kb/299484/EN-US/ ) PRB:使用 ADOX 检索 Access 表的列时,列按字母顺序排列
当 Jet Provider 确定一个 Excel 列包含了混合文本和数值数据时,Jet Provider 会选择“majority”数据类型并将不匹配的值以 NULL 形式返回。有关如何解决这个问题的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
194124 (http://support.microsoft.com/kb/194124/EN-US/ ) PRB:使用 DAO OpenRecordset 时 Excel 返回值为 NULL
回到顶端
参考有关如何将 Excel 用作数据源的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 257819 (http://suppo...有关如何将 Excel 用作数据源的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
257819 (http://support.microsoft.com/kb/257819/EN-US/ ) 如何:在 Visual Basic 或 VBA 中使用 ADO 来处理 Excel 数据
有关如何将数据传输到 Excel 中的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
295646 (http://support.microsoft.com/kb/295646/EN-US/ ) 如何:使用 ADO 将数据从 ADO 数据源传输到 Excel
247412 (http://support.microsoft.com/kb/247412/EN-US/ ) INFO:将数据从 Visual Basic 传输到 Excel 的方法
246335 (http://support.microsoft.com/kb/246335/EN-US/ ) 如何:使用“自动化”功能将数据从 ADO 记录集传输到 Excel
319951 (http://support.microsoft.com/kb/319951/EN-US/ ) 如何:通过 SQL Server 数据传输服务向 Excel 传送数据
306125 (http://support.microsoft.com/kb/306125/EN-US/ ) 如何:将数据从 Microsoft SQL Server 导入 Microsoft Excel
‘玖’ 怎样将EXCEL数据表,用存储过程或本地包导入到SQL SERVER 数据库中
excel2003导入数据库的语句是:
select * into newtable from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=C:\a.xls',a$)
改成需要的存储过程吧