




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、sqlserver2008 導入導出數據大全/*導出到 excelEXECmaster.xp_cmdshellbcpSettleDB.dbo.shanghuoutc:temp1.xls-c-q-SGNETDATA/GNETDATAUsaP/*導入 ExcelSELECT*FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:test.xls;UserID=Admin;Password=;Extendedproperties=Excel5.0).xactions/*動態文件名declarefnvarchar(20),svarchar(10
2、00)setfn=c:test.xlssets=Microsoft.Jet.OLEDB.4.0,DataSource=+fn+;UserID=Admin;Password=;Extendedproperties=Excel5.0sets=SELECT*FROMOpenDataSource(+s+).sheet1$exec(s)*/SELECTcast(cast(科目編號 asnumeric(10,2)asnvarchar(255)+轉換后的別名FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:test.xls;UserID=Admi
3、n;Password=;Extendedproperties=Excel5.0).xactions/*EXCELinsertOPENDATASOURCE(SQLOLEDB,DataSource=遠程 ip;UserID=sa;Password=密碼).庫名.dbo.表名(列名 1,列名 2)SELECT 列名 1,列名 2FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:test.xls;UserID=Admin;Password=;Extendedproperties=Excel5.0).xactions/*導入文本文件EXECm
4、aster.xp_cmdshellbcpdbname.tablenameinc:DT.txt-c-Sservername-Usa-Ppassword/*導出文本文件導到遠程 SQLPpassword或EXECmaster.xp_cmdshellbcpSelect*fromdbname.tablenamequeryoutc:DT.txt-c-Sservername-Usa-Ppassword導出到 TXT 文本,用逗號分開execmaster.xp_cmdshellbcp庫名.表名outd:tt.txt-c-t,-Usa-PpasswordBULKINSERT 庫名.表名FROMc:test.t
5、xtWITH(FIELDTERMINATOR=;,ROWTERMINATOR=n)-/*dBaseIV 文件select*fromOPENROWSET(MICROSOFT.JET.OLEDB.4.O,dBaseIV;HDR=NO;IMEX=2;DATABASE=C:,select*from客戶資料 4.dbf)-*/-/*dBaseIII 文件select*fromOPENROWSET(MICROSOFT.JET.OLEDB.4.O,dBaseIII;HDR=NO;IMEX=2;DATABASE=C:,select*from客戶資料 3.dbf)-*/-/*FoxPro 數據庫select*f
6、romopenrowset(MSDASQL,Driver=MicrosoftVisualFoxProDriver;SourceType=DBF;SourceDB=c:,select*fromaa.DBF)-*/*導入DBF文件*select*fromopenrowset(MSDASQL,Driver=MicrosoftVisualFoxProDriver;SourceDB=e:VFP98data;SourceType=DBF,select*fromcustomerwherecountry!=USAorderbycountry)go導出至 ijDBF*/如果要導出數據到已經生成結構(即現存的)F
7、OXPRO 表中,可以直接用下面的/*SQL 語句insertintoopenrowset(MSDASQL,Driver=MicrosoftVisualFoxProDriver;SourceType=DBF;SourceDB=c:,select*fromaa.DBF)select*from 表說明:SourceDB=c:指定 foxpro 表所在的文件夾aa.DBF 指定 foxpro 表的文件名.尸*導出至|Access*/insertintoopenrowset(Microsoft.Jet.OLEDB.4.0,x:A.mdb;admin;,A 表)select*from 數據庫名.B 表/
8、*導入 Access*/insertintoB 表 selet*fromopenrowset(Microsoft.Jet.OLEDB.4.0,x:A.mdb;admin;,A 表)文件名為參數declarefnamevarchar(20)setfname=d:test.mdbexec(SELECTa.*FROMopendatasource(Microsoft.Jet.OLEDB.4.0,+fname+;admin;,topics)asa)SELECT*FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=f:northwind.mdb;Je
9、tOLEDB:DatabasePassword=123;UserID=Admin;Password=;)產品DECLAREidocintDECLAREdocvarchar(1000)-sampleXMLdocumentSETdoc=CustomerwasverysatisfiedImportantHappyCustomer.*導入 xml 文件-CreateaninternalrepresentationoftheXMLdocument.EXECsp_xml_preparedocumentidocOUTPUT,doc-ExecuteaSELECTstatementusingOPENXMLrow
10、setprovider.SELECT*FROMOPENXML(idoc,/root/Customer/Order,1)WITH(oidchar(5),amountfloat,commentntexttext()EXECsp_xml_removedocumentidoc導到 Txt*/想用select*intoopendatasource(.)fromopendatasource(.)實現將一個 Excel 文件內容導入到一個文本文件假設 Excel 中有兩列,第一列為姓名,第二列為很行帳號(16 位)且銀行帳號導出到文本文件后分兩部分,前 8 位和后 8 位分開。鄒健:如果要用你上面的語句插入
11、的話,文本文件必須存在,而且有一行:姓名,銀行賬號 1,銀行賬號 2然后就可以用下面的語句進行插入注意文件名和目錄根據你的實際情況進行修改.insertintoopendatasource(MICROSOFT.JET.OLEDB.4.0,Text;HDR=Yes;DATABASE=C:).aa#txt-,aa#txt)-*/select 姓名,銀行賬號 1=left(銀行賬號,8),銀行賬號 2=right(銀行賬號,8)fromopendatasource(MICROSOFT.JET.OLEDB.4.0,Excel5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls-,Sh
12、eet1$)/*Excei如果你想直接插入并生成文本文件,就要用 bcpdeclaresqlvarchar(8000),tbnamevarchar(50)- -首先將 excel 表內容導入到一個全局臨時表selecttbname=#temp+cast(newid()asvarchar(40)+,sql=select 姓名,銀行賬號 1=left(銀行賬號,8),銀行賬號 2=right(銀行賬號,8)into+tbname+fromopendatasource(MICROSOFT.JET.OLEDB.4.0”Excel5.0;HDR=YES;IMEX=2;DATABASE=c:a.xls”)
13、.Sheet1$exec(sql)- -然后用 bcp 從全局臨時表導出到文本文件setsql=bcp+tbname+outc:aa.txt/S(local)/P/cexecmaster.xp_cmdshellsql- -刪除臨時表exec(droptable+tbname)導整個數據庫*/用 bcp 實現的存儲過程/*實現數據導入/導出的存儲過程根據不同的參數,可以實現導入/導出整個數據庫/單個表調用示例:- -導出調用示例- -導出單個表execfile2tablezj,xzkh_sa.地區資料,c:zj.txt,1- -導出整個數據庫execfile2tablezj,xzkh_sa,C:
14、docman,1- -導入調用示例- -導入單個表execfile2tablezj,xzkh_sa.地區資料,c:zj.txt,0- -導入整個數據庫execfile2tablezj,xzkh_sa,C:docman,0*/ifexists(select1fromsysobjectswherename=File2Tableandobjectproperty/*(id,IsProcedure)=1)dropprocedureFile2TablegocreateprocedureFile2Tableservernamevarchar(200)-數據庫.dbo.表名,如果不指定:.dbo.表名,則導
15、出數據庫的所有用戶表-導入/導出路徑/文件名,如果tbname 參數指明是導出整個數據庫,則這個參數是文件存放路徑,文件名自動用表名.txt,isoutbit-1 為導出,0 為導入 asdeclaresqlvarchar(8000)iftbnamelike%.%.%-如果指定了表名,則直接導出單個表beginsetsql=bcp+tbname+casewhenisout=1thenoutelseinend+filename+/w+/S+servername+casewhenisnull(username,)=thenelse/U+usernameend+/P+isnull(password,
16、)execmaster.xp_cmdshellsqlendelsebegin-導出整個數據庫,定義游標,取出所有的用戶表declarem_tbnamevarchar(250)ifright(filename,1)setfilename=filename+setm_tbname=declare#tbcursorforselectnamefrom+tbname+.sysobjectswherextype=Uexec(m_tbname)open#tbfetchnextfrom#tbintom_tbnamewhilefetch_status=0beginsetsql=bcp+tbname+.+m_tb
17、name+casewhenisout=1thenoutelseinend+filename+m_tbname+.txt/w+/S+servername+casewhenisnull(username,)=thenelse/U+usernameend+/P+isnull(password,)execmaster.xp_cmdshellsql-服務器名,usernamevarchar(200)-用戶名,如果用 NT 驗證方式,則為空,passwordvarchar(200)-密碼,tbnamevarchar(500),filenamevarchar(1000)fetchnextfrom#tbint
18、om_tbnameendclose#tbdeallocate#tbendgo/*Oracle*/EXECsp_addlinkedserverOracleSvr,Oracle7.3,MSDAORA,ORCLDBGOinsertintoopenquery(mailser,selectdisorder,catagofromyulin)values(333,777)補充:對于用 bcp 導出,是沒有字段名的.用 openrowset 導出,需要事先建好表.用 openrowset 導入,除 ACCESS 及 EXCEL 外,均不支持非本機數據導入postedon2005-08-0223:03 任搏軟閱
19、讀(1133)評論(4)編輯收藏引用網摘所屬分類:DataBaseFeedBack:#re:SQL 語句導入導出大全收集2005-08-0600:32 任搏軟熟悉 SQLSERVER2000 的數據庫管理員都知道,其 DTS 可以進行數據的導入導出,其實,我們也可以使用Transact-SQL 語句進行導入導出操作。在 Transact-SQL 語句中,我們主要使用 OpenDataSource 函數、OPENROWSET 函數,關于函數的詳細說明,請參考 SQL 聯機幫助。利用下述方法,可以十分容易地實現 SQLSERVER、ACCESS、EXCEL 數據轉換,詳細說明如下:deletefr
20、omopenquery(mailser,select*select*fromopenquery(mailser,select*updateopenquery(mailser,select*fromfromyulin)fromyulin)yulinwhereid=15)setdisorder=555,catago=888、SQLSERVER 和 ACCESS 的數據導入導出常規的數據導入導出:使用 DTS 向導遷移你的 Access 數據到 SQLServer,你可以使用這些步驟:1 在 SQLSERVER 企業管理器中的 Tools(工具)菜單上,選擇 DataTransformation2S
21、ervices(數據轉換服務),然后選擇 czdImportData(導入數據)。3 在 ChooseaDataSource(選擇數據源)對話框中選擇 MicrosoftAccessastheSource,然后鍵入你的.mdb 數據庫(.mdb 文件擴展名)的文件名或通過瀏覽尋找該文件。4 在 ChooseaDestination(選擇目標)對話框中,選擇 MicrosoftOLEDBProviderforSQLServer,選擇數據庫服務器,然后單擊必要的驗證方式。5 在 SpecifyTableCopy(指定表格復制)或 Query(查詢)對話框中,單擊 Copytables(復制表格)。
22、6 在 SelectSourceTables(選擇源表格)對話框中,單擊 SelectAll(全部選定)。下一步,完成。Transact-SQL 語句進行導入導出:1 .在 SQLSERVER 里查詢 access 數據:SELECT*FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:DB.mdb;UserID=Admin;Password=).表名2 .將 access 導入 SQLserver在 SQLSERVER 里運行:SELECT*INTOnewtableFROMOPENDATASOURCE(Microsoft.Jet.O
23、LEDB.4.0,DataSource=c:DB.mdb;UserID=Admin;Password=).表名3 .將 SQLSERVER 表里的數據插入到 Access 表中-=在 SQLSERVER 里運行:insertintoOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:DB.mdb;UserID=Admin;Password=).表名(列名 1,列名 2)select 列名 1,列名 2fromsql 表實例:insertintoOPENROWSET(Microsoft.Jet.OLEDB.4.0,C:db.mdb;admin;
24、,Test)selectid,namefromTestINSERTINTOOPENROWSET(Microsoft.Jet.OLEDB.4.0,c:trade.mdb;admin;,表名)SELECT*FROMsqltablename二、SQLSERVER 和 EXCEL 的數據導入導出1、在 SQLSERVER 里查詢 Excel 數據:SELECT*FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:book1.xls;UserID=Admin;Password=;Extendedproperties=Excel5.0).下面是個
25、查詢的示例,它通過用于 Jet 的 OLEDB 提供程序查詢 Excel 電子表格。SELECT*FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:Financeaccount.xls;UserID=Admin;Password=;Extendedproperties=Excel5.0).xactions2、將 Excel 的數據導入 SQLserver:SELECT*intonewtableFROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:book1.xls;UserI
26、D=Admin;Password=;Extendedproperties=Excel5.0).Sheet1$實例:SELECT*intonewtableFROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:Financeaccount.xls;UserID=Admin;Password=;Extendedproperties=Excel5.0).xactions3、將 SQLSERVER 中查詢到的數據導成一個 Excel 文件T-SQL 代碼:EXECmaster.xp_cmdshellbcp 庫名.dbo.表名 outc:Temp.
27、xls-c-q-Sservername-Usa-P參數:S 是 SQL 服務器名;U 是用戶;P 是密碼說明:還可以導出文本文件等多種格式實例:EXECmaster.xp_cmdshellbcpsaletesttmp.dbo.CusAccountoutc:temp1.xls-c-q-SpmserverUsaPsaEXECmaster.xp_cmdshellbcpSELECTau_fname,au_lnameFROMpubs.authorsORDERBYau_lnamequeryoutC:authors.xls-c-Sservername-Usa-Ppassword在 VB6 中應用 ADO 導
28、出 EXCEL 文件代碼:DimcnAsNewADODB.Connectioncn.openDriver=SQLServer;Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;cn.executemaster.xp_cmdshellbcpSELECTcol1,col2FROM 庫名.dbo.表名queryoutE:DT.xls-c-Sservername-Usa-Ppassword4、在 SQLSERVER 里往 Excel 插入數據:insertintoOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c
29、:Temp.xls;UserID=Admin;Password=;Extendedproperties=Excel5.0).table1(A1,A2,A3)values(1,2,3)T-SQL 代碼:INSERTINTOOPENDATASOURCE(Microsoft.JET.OLEDB.4.0,ExtendedProperties=Excel8.0;Datasource=C:traininginventur.xls).Filiale1$(bestand,produkt)VALUES(20,Test)總結:利用以上語句,我們可以方便地將 SQLSERVER、ACCESS 和 EXCEL 電子表
30、格軟件中的數據進行轉換,為我們提供了極大方便!回復#re:SQL 語句導入導出大全收集2005-08-0600:37 任搏軟ASP 導出 Excel 數據的四種方法來源:aspsky 作者:tonny一、使用 OWC什么是 OWC?OWC 是 OfficeWebCompent 的縮寫,即 Microsoft 的 OfficeWeb 組件,它為在 Web 中繪制圖形提供了靈活的同時也是最基本的機制。在一個 intranet 環境中,如果可以假設客戶機上存在特定的瀏覽器和一些功能強大的軟件(如 IE5 和 Office2000),那么就有能力利用 OfficeWeb 組件提供一個交互式圖形開發環境
31、O 這種模式下,客戶端工作站將在整個任務中分擔很大的比重。0theniColOffset=iColOffElseiColOffset=2EndIfEndPropertyPublicPropertyLetRowOffset(iRowOff)IfiRowOff0theniRowOffset=iRowOffElseiRowOffset=2EndIfEndPropertySubGenerateWorksheet(objRS)PopulatestheExcelworksheetbasedonaRecordsetscontentsStartbydisplayingthetitlesIfobjRS.EOFt
32、henExitSubDimobjField,iCol,iRowiCol=iColOffsetiRow=iRowOffsetForEachobjFieldinobjRS.FieldsobjSpreadsheet.Cells(iRow,iCol).Value=objField.NameobjSpreadsheet.Columns(iCol).AutoFitColumns設置 Excel 表里的字體objSpreadsheet.Cells(iRow,iCol).Font.Bold=TrueobjSpreadsheet.Cells(iRow,iCol).Font.Italic=FalseobjSpre
33、adsheet.Cells(iRow,iCol).Font.Size=10objSpreadsheet.Cells(iRow,iCol).Halignment=2居中 iCol=iCol+1NextobjFieldDisplayallofthedataDoWhileNotobjRS.EOFiRow=iRow+1iCol=iColOffsetForEachobjFieldinobjRS.FieldsIfIsNull(objField.Value)thenobjSpreadsheet.Cells(iRow,iCol).Value=ElseobjSpreadsheet.Cells(iRow,iCol
34、).Value=objField.ValueobjSpreadsheet.Columns(iCol).AutoFitColumnsobjSpreadsheet.Cells(iRow,iCol).Font.Bold=FalseobjSpreadsheet.Cells(iRow,iCol).Font.Italic=FalseobjSpreadsheet.Cells(iRow,iCol).Font.Size=10EndIfiCol=iCol+1NextobjFieldobjRS.MoveNextLoopEndSubFunctionSaveWorksheet(strFileName)Savethewo
35、rksheettoaspecifiedfilenameOnErrorResumeNextCallobjSpreadsheet.ActiveSheet.Export(strFileName,0)SaveWorksheet=(Err.Number=0)EndFunctionEndClassDimobjRSSetobjRS=Server.CreateObject(ADODB.Recordset)objRS.OpenSELECT*FROMxxxx,Provider=SQLOLEDB.1;PersistSecurityInfo=True;UserID=xxxx;Password=xxxx;Initial
36、Catalog=xxxx;Datasource=xxxx;DimSaveNameSaveName=Request.Cookies(savename)(name)DimobjExcelDimExcelPathExcelPath=Excel&SaveName&.xlsSetobjExcel=NewExcelGenobjExcel.RowOffset=1objExcel.ColumnOffset=1objExcel.GenerateWorksheet(objRS)IfobjExcel.SaveWorksheet(Server.MapPath(ExcelPath)thenRespons
37、e.Write已保存為 Excel 文件.下載ElseResponse.Write在保存過程中有錯誤!EndIfSetobjExcel=NothingobjRS.CloseSetobjRS=Nothing%二、用 Excel 的 Application 組件在客戶端導出到 Excel 或 Word注意:兩個函數中的“data 是網頁中要導出的 table 的 id導出到 Excel 代碼!-functionAutomateExcel()(/StartExcelandgetApplicationobject.varoXL=newActiveXObject(Excel.Application);/
38、Getanewworkbook.varoWB=oXL.Workbooks.Add();varoSheet=oWB.ActiveSheet;vartable=document.all.data;varhang=table.rows.length;varlie=table.rows(0).cells.length;/Addtableheadersgoingcellbycell.for(i=0;ihang;i+)for(j=0;j導出到 Word 代碼SubbuildDocsettable=document.all.datarow=table.rows.lengthcolumn=table.rows
39、(1).cells.lengthSetobjWordDoc=CreateObject(Word.Document)objWordDoc.Application.Documents.AddtheTemplate,FalseobjWordDoc.Application.Visible=TrueDimtheArray(20,10000)fori=0torow-1forj=0tocolumn-1theArray(j+1,i+1)=table.rows(i).cells(j).innerTEXTnextnextobjWordDoc.Application.ActiveDocument.Paragraph
40、s.Add.Range.InsertBefore(綜合查詢結果集)/顯不表格標題objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore()SetrngPara=objWordDoc.Application.ActiveDocument.Paragraphs(1).RangeWithrngPara.Bold=True/將標題設為粗體.ParagraphFormat.Alignment=1/將標題居中.Font.Name=隸書/設定標題字體.Font.Size=18/設定標題字體大小EndWithSetrngC
41、urrent=objWordDoc.Application.ActiveDocument.Paragraphs(3).RangeSettabCurrent=ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,row,column)fori=1tocolumnobjWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.InsertAftertheArray(i,1)objWordDoc.Application.ActiveDocument.Tabl
42、es(1).Rows(1).Cells(i).Range.ParagraphFormat.alignment=1nextFori=1tocolumnForj=2torowobjWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.InsertAftertheArray(i,j)objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.ParagraphFormat.alignment=1NextNextEndSub三、直接在 IE
43、 中打開,再存為 EXCEL 文件把讀出的數據用格式,在網頁中顯示出來,同時,加上下一句即可把 EXCEL 表在客客戶端顯示。注意:顯示的頁面中,只把輸出,最好不要輸出其他表格以外的信息。用 fso 方法生成文本文件的方法,生成一個擴展名為 csv 文件。此文件,一行即為數據表的一行。生四、導出以半角逗號隔開的csv成數據表字段用半角逗號隔開。(有關 fso 生成文本文件的方法,在此就不做介紹了)CSV 文件介紹(逗號分隔文件)選擇該項系統將創建一個可供下載的 CSV 文件;CSV 是最通用的一種文件格式,它可以非常容易地被導入各種 PC 表格及數據庫中。請注意即使選擇表格作為輸出格式,仍然可
44、以將結果下載 CSV 文件。在表格輸出屏幕的底部,顯示有CSV 文件選項,點擊它即可下載該文件。如果您把瀏覽器配置為將您的電子表格軟件與文本(TXT)/逗號分隔文件(CSV)相關聯,當您下載該文件時,該文件將自動打開。下載下來后,如果本地已安裝 EXCEL,點擊此文件,即可自動用 EXCEL軟件打開此文件。回復-re:SQL 語句導入導出大全收集2005-08-0600:38 任搏軟標題導入/導出 Excelzjcxc(原作)關鍵字導入/導出 Excel從 Excel 文件中,導入數據到 SQL 數據庫中,很簡單直接用下面的語句:/*=*/- -如果接受數據導入的表已經存在insertinto
45、 表 select*fromOPENROWSET(MICROSOFT.JET.OLEDB.4.0,Excel5.0;HDR=YES;DATABASE=c:test.xls,sheet1$)- -如果導入數據并生成表select*into 表 fromOPENROWSET(MICROSOFT.JET.OLEDB.4.0,Excel5.0;HDR=YES;DATABASE=c:test.xls,sheet1$)/*=*/- -如果從 SQL 數據庫中,導出數據到 Excel,如果 Excel 文件已經存在,而且已經按照要接收的數據創建好表頭,就可以簡單的用:insertintoOPENROWSET
46、(MICROSOFT.JET.OLEDB.4.0,Excel5.0;HDR=YES;DATABASE=c:test.xls,sheet1$)select*from 表- -如果 Excel 文件不存在,也可以用 BCP 來導成類 Excel 的文件,注意大小寫:- -導出表的情況EXECmaster.xp_cmdshellbcp 數據庫名.dbo.表名 outc:test.xls/c-/S服務器名/U用戶名-P密碼- -導出查詢的情況EXECmaster.xp_cmdshellbcpSELECTau_fname,au_lnameFROMpubs.authorsORDERBYau_lnamequ
47、eryoutc:test.xls/c-/S服務器名/U用戶名-P密碼說明.c:test.xls 為導入/導出的 Excel 文件名.sheet1$為 Excel 文件的工作表名,一般要加上$才能正常使用.下面是導出真正 Excel 文件的方法:/*-數據導出 EXCEL導出表中的數據到 Excel,包含字段名,文件為真正的 Excel 文件,如果文件不存在,將自動創建文件,如果表不存在,將自動創建表基于通用性考慮,僅支持導出標準數據類型-*/*-調用示例p_exporttbtbname=地區資料,path=c:,fname=aa.xls-*/ifexists(select*fromdbo.sy
48、sobjectswhereid=object_id(Ndbo.p_exporttb)andOBJECTPROPERTY(id,NIsProcedure)=1)dropproceduredbo.p_exporttbGOcreateprocp_exporttbtbnamesysname,-要導出的表名,注意只能是表名/視圖名pathnvarchar(1000),-文件存放目錄fnamenvarchar(250)=-文件名,默認為表名 asdeclareerrint,srcnvarchar(255),descnvarchar(255),outintdeclareobjint,constrnvarch
49、ar(1000),sqlvarchar(8000),fdlistvarchar(8000)-參數檢測ifisnull(fname,)=setfname=tbname+.xls-檢查文件是否已經存在ifright(path,1)setpath=path+createtable#tb(abit,bbit,cbit)setsql=path+fnameinsertinto#tbexecmaster.xp_fileexistsql-數據庫創建語句setsql=path+fnameifexists(select1from#tbwherea=1)setconstr=DRIVER=MicrosoftExcel
50、Driver(*.xls);DSN=;READONLY=FALSE+;CREATE_DB=+sql+;DBQ=+sqlelsesetconstr=Provider=Microsoft.Jet.OLEDB.4.0;ExtendedProperties=Excel5.0;HDR=YES+;DATABASE=+sql+-連接數據庫execerr=sp_oacreateadodb.connection,objoutiferr0gotolberrexecerr=sp_oamethodobj,open,null,constriferr0gotolberr-創建表的 SQLselectsql=,fdlist
51、=selectfdlist=fdlist+,+,sql=sql+,++in(char,nchar,varchar,nvarchar)thentext(+cast(casewhena.length255then255elsea.lengthendasvarchar)+)in(tynyint,int,bigint,tinyint)in(smalldatetime,datetime)in(money,smallmoney)thenmoneyelseb.
52、nameendFROMsyscolumnsaleftjoinsystypesbona.xtype=notin(image,text,uniqueidentifier,sql_variant,ntext,varbinary,binary,timestamp)andobject_id(tbname)=idselectsql=createtable+tbname+(+substring(sql,2,8000)+),fdlist=substring(fdlist,2,8000)execerr=sp_oamethodobj,execute,outout,sql
53、iferr0gotolberrexecerr=sp_oadestroyobj導入數據setsql=openrowset(MICROSOFT.JET.OLEDB.4.0JExcel5.0;HDR=YES;DATABASE=+path+fname+”,+tbname+$)exec(insertinto+sql+(+fdlist+)select+fdlist+from+tbname)returnlberr:execsp_oageterrorinfo0,srcout,descoutlbexit:selectcast(errasvarbinary(4)as 錯誤號,srcas 錯誤源,descas 錯誤
54、描述selectsql,constr,fdlistgo*-數據導出 EXCEL導出查詢中的數據到 Excel,包含字段名,文件為真正的 Excel 文件,如果文件不存在,將自動創建文件,如果表不存在,將自動創建表基于通用性考慮,僅支持導出標準數據類型-*/*-調用示例p_exporttbsqlstr=select*from 地區資料,path=c:,fname=aa.xls,sheetname=地區資料-*/ifexists(select*fromdbo.sysobjectswhereid=object_id(Ndbo.p_exporttb)andOBJECTPROPERTY(id,NIsPr
55、ocedure)=1)dropproceduredbo.p_exporttbGOcreateprocp_exporttbsqlstrsysname,-查詢語句,如果查詢語句中使用了 orderby,請加上 top100percent,注意,如果導出表/視圖,用上面的存儲過程pathnvarchar(1000),-文件存放目錄fnamenvarchar(250),-文件名sheetnamevarchar(250)=-要創建的工作表名,默認為文件名asdeclareerrint,srcnvarchar(255),descnvarchar(255),outintdeclareobjint,const
56、rnvarchar(1000),sqlvarchar(8000),fdlistvarchar(8000)- -參數檢測ifisnull(fname,)=setfname=temp.xlsifisnull(sheetname,)=setsheetname=replace(fname,.,#)- -檢查文件是否已經存在ifright(path,1)setpath=path+createtable#tb(abit,bbit,cbit)setsql=path+fnameinsertinto#tbexecmaster.xp_fileexistsql- -數據庫創建語句setsql=path+fnameifexists(select1from#tbwherea=1)setconstr=DRIVER=MicrosoftExcelDriver(*.xls);DSN=;READONLY=FALSE+;CREATE_DB=+sql+;DBQ=+sqlelsesetconstr=Provider=Microsoft.Jet.OLEDB.4.0;ExtendedProperties=Excel5.0;HDR=YES+;DATABASE=+sql+- -連接數據
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 理發店合作協議書合同
- 瓷磚材料供應合同協議
- 現澆混凝土銷售合同協議
- 田塊承包合同協議書范本
- 監控設備維護協議合同
- 電梯檢測技術服務合同協議
- 甘孜小區保潔合同協議
- 瑜伽普拉提合作合同協議
- 監控安裝工程合同協議
- 電影招商引資合同協議
- 2025年度商鋪租賃代理服務合同(含獨家代理權)
- 搶救病人護理書寫規范
- (完整版)中醫醫院醫療設備配置標準(2012年)
- 高壓配電室操作規程(3篇)
- 2025護坡護岸施工及驗收規范
- 2025加壓水洗法沼氣制備生物天然氣技術規范
- 工程項目不可抗力補充協議
- 《糖尿病酮癥酸中毒》課件
- 實驗室智能化設備的技術發展與趨勢
- 電廠化驗培訓課件
- 2024年漢川市人民醫院高層次衛技人才招聘筆試歷年參考題庫頻考點附帶答案
評論
0/150
提交評論