1. 程式人生 > >通過SQL語句直接實現Excel與資料庫的匯入匯出

通過SQL語句直接實現Excel與資料庫的匯入匯出

--下面是匯出真正Excel檔案的方法:(請將一下所有程式碼複製到儲存過程中)

ifexists (select*from dbo.sysobjects where id =object_id(N'[dbo].[p_exporttb]'andOBJECTPROPERTY(id, N'IsProcedure'=1)
dropprocedure[dbo].[p_exporttb]
GO

/*--資料匯出EXCEL
 
 匯出表中的資料到Excel,包含欄位名,檔案為真正的Excel檔案
 ,如果檔案不存在,將自動建立檔案
 ,如果表不存在,將自動建立表
 基於通用性考慮,僅支援匯出標準資料型別

--鄒建 2003.10(引用請保留此資訊)--
*/


/*--呼叫示例

 p_exporttb @tbname='地區資料',@path='c:',@fname='aa.xls'
--
*/

createproc p_exporttb
@tbname sysname,    --要匯出的表名
@pathnvarchar(1000),   --檔案存放目錄
@fnamenvarchar(250)=''--檔名,預設為表名
as
declare@errint,@srcnvarchar(255),@descnvarchar(255),@outint
declare@objint,@constr
nvarchar(1000),@sqlvarchar(8000),@fdlistvarchar(8000)

--引數檢測
ifisnull(@fname,'')=''set@fname=@tbname+'.xls'

--檢查檔案是否已經存在
ifright(@path,1)<>''set@path=@path+''
createtable #tb(a bit,b bit,c bit)
set@sql=@path+@fname
insertinto #tb exec master..xp_fileexist @sql

--資料庫建立語句
set@sql=@path+@fname

ifexists(select1from #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 8.0;HDR=YES'
    
+';DATABASE='+@sql+'"'


--連線資料庫
exec@err=sp_oacreate 'adodb.connection',@obj out
if@err<>0goto lberr

exec@err=sp_oamethod @obj,'open',null,@constr
if@err<>0goto lberr

/*--如果覆蓋已經存在的表,就加上下面的語句
--建立之前先刪除表/如果存在的話
select @sql='drop table ['[email protected]+']'
exec @err=sp_oamethod @obj,'execute',@out out,@sql
--
*/


--建立表的SQL
select@sql='',@fdlist=''
select@fdlist=@fdlist+',['+a.name+']'
 ,
@sql=@sql+',['+a.name+''
  
+case 
   
when b.name like'%char' 
   
thencasewhen a.length>255then'memo'
    
else'text('+cast(a.length asvarchar)+')'end
   
when b.name like'%int'or b.name='bit'then'int'
   
when b.name like'%datetime'then'datetime'
   
when b.name like'%money'then'money'
   
when b.name like'%text'then'memo'
   
else b.name end
FROM syscolumns a leftjoin systypes b on a.xtype=b.xusertype
where b.name notin('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp')
 
andobject_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<>0goto lberr

exec@err=sp_oadestroy @obj

--匯入資料
set@sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES;IMEX=1
   ;DATABASE=
'+@path+@fname+''',['+@tbname+'$])'

exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)

return

lberr:
 
exec sp_oageterrorinfo 0,@src out,@desc out
lbexit:
 
selectcast(@errasvarbinary(4)) as 錯誤號

相關推薦

通過SQL語句直接實現Excel資料庫匯入匯出

--下面是匯出真正Excel檔案的方法:(請將一下所有程式碼複製到儲存過程中) ifexists (select*from dbo.sysobjects where id =object_id(N'[dbo].[p_exporttb]') andOBJECTPROPERTY(id, N'IsProced

phpExcel實現Excel資料的匯入匯出(全步驟詳細解析)

一,Excel檔案上傳,返回陣列 (需下載PHPExcel類檔案,引入到專案類庫裡)   1.上傳新增excel  //接收前臺檔案, public function addExcel() { //接收前臺檔案 $e

利用PHPExcel 實現excel資料的匯入匯出(原始碼實現

利用PHPExcel 實現excel資料的匯入匯出(原始碼實現) 在開發過程中,經常會遇到匯入匯出的需求,利用phpexcel類實現起來也是比較容易的,下面,我們一步一步實現 提前將phpexcel類下載,並放在擴充套件目錄中,如圖所示 一、Excel匯出      匯出

在 Laravel 使用擴充套件包maatwebsite/excel 實現 Excel/CSV 檔案匯入匯出功能

一、安裝1、composer require maatwebsite/excel ~2.0.02、在專案下composer.json中require裡新增"maatwebsite/excel":"~2.0.0",並執行composer update 載入該包 二、配置1、在

在SSM下基於POI實現Excel表的匯入/匯出

對於批量資料的操作,在專案中引進Excel的匯入和匯出功能是個不錯的選擇。對於Excel表的結構,簡單理解可以把它分成三部分(Sheet,Cell,Row),這三部分可以理解為excel表中的頁,列,行。因此,我們想要獲取到某一個單元的內容,可以通過獲取該單元所在的頁數、對應

java實現Excel檔案的匯入匯出

java實現對Excel檔案的操作主要是通過POI來實現的 1. POI簡介 Apache POI是Apache軟體基金會的開放原始碼函式庫,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。更多詳情可以[百度

在SSM下使用POI實現Excel表的匯入/匯出

匯出就是將List轉化為Excel(listToExcel)匯入就是將Excel轉化為List(excelToList)POIApache POI是Apache軟體基金會的開放原始碼函式庫,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。

在 Laravel 5 中使用 Laravel Excel 實現 Excel/CSV 檔案匯入匯出功能

1、簡介Laravel Excel 在 Laravel 5 中整合 PHPOffice 套件中的 PHPExcel,從而方便我們以優雅的、富有表現力的程式碼實現Excel/CSV檔案的匯入和匯出。本文我們將在Laravel中使用Laravel Excel簡單實現Excel檔案

javascript--利用js-xlsx實現Excel表格的匯入匯出

<button onclick="downloadExl(jsono)">匯出</button> <script src="js-xlsx/xlsx.full.min.js"></script> <!--呼叫FileSaver saveAs函式可以實現檔案

Laravel Excel實現Excel/CSV檔案匯入匯出的功能詳解(合併單元格,設定單元格樣式)

Laravel Excel實現Excel/CSV檔案匯入匯出(合併單元格,設定單元格樣式) 這篇文章主要給大家介紹了關於在Laravel中如何使用Laravel Excel實現Excel/CSV檔案匯入匯出功能的相關資料,文中通過示例程式碼介紹的非常詳細,對大

C#實現EXCEL資料的匯入匯出

使用者經常會有這種需求,可以將excel中的資料自動匯入到資料庫,而不用費時費力地手動新增,或者將某些資料匯出存放到excel表格中。 一、excel匯入 實現思路:先將excel檔案上傳到伺服器(檔案上傳請移步前一篇文章外掛webuploader實現檔

在SqlServer中通過SQL語句實現樹狀查詢

clas all bold join where procedure ner log class 1 CREATE PROCEDURE [dbo].[GetTree] 2 @Id int 3 AS 4 BEGIN 5 with cte as

mybaits(查詢別名、日誌框架顯示sql語句、物件屬性和資料庫表字段不匹配resultMap使用、mysql資料查詢分頁、執行sql和儲存過程、動態SQL語句

主要是各種配置檔案,建議把整個專案搬到自己電腦上慢慢看。 建立maven專案 首先是各種配置檔案: pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m

執行多條SQL語句實現資料庫事務(不可傳入Sql引數)

          《圖書館維護系統》的時候我負責任務管理模組,由於一些業務有些複雜,所以想用儲存過程,但是賈琳師哥說了一堆儲存過程的不好,讓我用sql語句。好吧,用就用吧,但是吧,大家都知道執行多條sql語句,是需要用到事務的(保持資料一致性),儲存過程中加事務我還是會滴

SQL server 通過SQL語句實現表數據的復制(可跨庫)

sel clas 中標 sql語句 同時 ssms sms 但是 off   今天遇到這樣的問題,要從一個數據庫中復制一張表的數據到另一個數據庫的同名表,以往我的做法就是將腳本文件導出來,然後執行一下,但是這次我試了一下,由於數據太多,導出的腳本有五百多兆,ssms根本運行

SqlServer通過sql語句訪問指定IP地址的資料庫

1.啟用 'Ad Hoc Distributed Queries' exec sp_configure 'show advanced options',1 reconfigure exec s

通過sql語句快速查詢資料庫共有多少張表

一、無條件查詢:select * from tab  order by tname 二、過濾查詢:select * from tab where tname not like '%$%' or

通過SQL語句檢視資料庫表的列數

看具體是什麼資料庫,以oracle,mysql,sqlserver分別回答。1、oracle:1select count(*) from user_tab_cols where table_name='表名';--表名含英文的話應為英文大寫字母結果如圖:2、mysql:1se

通過SQL語句資料庫,生成資料庫模型PDM方法詳解

PowerDesign Version: 16.1.0.3637  步驟如下: 第一步:File->Reverse Enginner->Databases... 第二步:選擇適用你SQL檔案資料庫型別,->點選“確定” 第三步:點選實用“Using

Mybatis在接口上使用註解配置SQL語句以及接口xml一起使用

Mybatis 持久層框架 在接口上使用註解配置SQL語句 MyBatis對於大部分的基於XML的映射器元素(包括&lt;select&gt;,&lt;update&gt;)提供了對應的基於註解的配置項。然而在某些情況下,基於註解配置 還不能支持基於XML的一些元素。M