導入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$)
改成需要的存儲過程吧