将excel表导入到SQL数据库的方法和代码
如何把EXCEL数据导入到SQLSERVER数据库中
如何把EXCEL数据导入到SQLSERVER数据库中将Excel数据导入SQL Server数据库可以通过以下步骤实现:1. 打开Excel文件并选择要导入的数据:首先,打开Excel文件并选择要导入到SQL Server数据库的数据。
确保数据位于连续的单元格区域内,并且包含正确的列和行标题。
2. 导出Excel数据为CSV格式:将Excel数据导出为CSV(逗号分隔值)格式,这种格式是一种常见的数据交换格式,可以方便地被导入到SQL Server数据库中。
在Excel中,选择“文件”>“另存为”,然后选择CSV格式进行保存。
3. 创建目标表:在SQL Server数据库中创建一个目标表,用于存储要导入的数据。
可以使用SQL Server Management Studio或任何其他SQL编程工具来创建表。
确保表结构与将要导入的Excel数据的列和行标题相匹配。
4. 定义目标表的列:为目标表定义与Excel数据相匹配的列,保证目标表的列名与Excel数据的列名相同,并且数据类型也相匹配。
如果需要修改列的数据类型或长度,可以使用ALTER TABLE语句进行修改。
5. 使用SQL Server导入向导:使用SQL Server导入向导来导入CSV文件中的数据。
打开SQL Server Management Studio,右键单击目标数据库,选择“任务”>“导入数据”来打开导入向导。
6. 选择数据源:在导入向导的“选择数据源”步骤中,选择适当的数据源类型,这里选择“Flat File Source”,然后浏览找到之前保存的CSV文件。
7. 配置数据源:在导入向导的“配置Flat File Source”步骤中,配置CSV文件的设置。
确保分隔符设置为逗号(CSV的默认分隔符),并根据需要调整其他设置。
点击“下一步”继续。
8.选择目标数据库:在导入向导的“选择目标表或查看现有表”步骤中,选择目标数据库和表。
sql server 语句 将excel数据插入到数据库表中的语句
sql server 语句将excel数据插入到数据库表中的语句将Excel数据插入到SQL Server数据库表中的方法有以下两种:情况一:Excel数据符合SQL Server数据表字段规则1. 在SQL Server Management Studio中,创建一个与Excel文件相对应的数据库表。
2. 编写SQL语句,使用`BULK INSERT`命令将Excel数据导入到数据库表中。
示例代码如下:```sqlBULK INSERT YourTableNameFROM 'Excel文件路径及文件名.xlsx'WITH (FORMATFILE = 'Excel文件路径及文件名.xlsx',FIRSTROW = 2, --从第二行开始导入数据,第一行为标题行TABLESTRUCTUREONLY = false);```情况二:Excel数据字段数量与SQL Server表字段数量不同1. 创建一个临时表,用于存储Excel数据。
2. 使用`INSERT INTO`语句将Excel数据插入到临时表中。
示例代码如下:```sqlCREATE TEMPORARY TABLE TempTable(Column1 datatype,Column2 datatype,--其他字段按需创建);--填充临时表数据INSERT INTO TempTableSELECT Column1, Column2FROM Excel文件路径及文件名.xlsxWHERE (Column1, Column2) IN (SELECT Column1, Column2FROM YourTableName);--将临时表数据插入到目标表中INSERT INTO YourTableNameSELECT Column1, Column2FROM TempTable;```注意:请根据实际情况替换`YourTableName`、`Excel文件路径及文件名.xlsx`以及数据表字段名称和类型。
Excel文件导入数据到SQL数据库
从Excel文件导入数据到SQL数据库将Excel文件gongzibiao.xls中的数据导入到SQL Server 2005中。
----导入数据并生成表在SQL SERVER 2005新建数据库wangzhengwei,然后鼠标右键新建查询,输入select*into MyUser_gz from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=D:\胡兴\MyBook2.xls',sheet1$)将生成MyUser_gz表。
如果出现:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
系统管理员可以通过使用 sp_configure 启用 'Ad HocDistributed Queries'。
有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
解决办法是在新建的数据库上右键新建查询,然后输入下面代码:EXEC sp_configure 'show advanced options', 1GORECONFIGUREGOEXEC sp_configure 'Ad Hoc Distributed Queries', 1GORECONFIGUREGO然后再执行select*into MyUser_gz from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=D:\胡兴\MyBook2.xls',sheet1$)注意:在执行之前必须把对应的.xls文件关闭。
EXCEL表格导入到SQL数据库(附导入重复数据方法)
另:由于,SL Server 2005为了安全性,安装完以后,将很多组件的默认状态设置为不启用。如果需要用到这些特性,可以由管理员手工启用。为此,SL Server 2005还提供了一个专门的管理工具:SL Server Surface Area Configuration
要解决本文的问题,也就是要启用AD Hoc Distributed ueries特性,执行Surface Area Configuration,选择Surface Area Configuration for features
例如:
数据库里建好一个表testTable_1,有5个字段id, name, date, money, content,C盘下book1.xls文件的sheet1工作表里写好对应的数据并设好数据类型,执行如下插入语句即可:
insert into testTable_1 ([name], [date], [money], [content])
Data Source就是excel文件的路径,这个简单;UserId、Password和Extended properties这三个属性为 “User ID=Admin;Password=;Extended properties=Excel 5.0”。最后那个“xactions”就是excel文件里所选的工作表名,注意默认的Sheet1要写成[Sheet1$]。
rce( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=&uot;c:\Finance\account.xls&uot;;User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
把Excel表导入SQL数据库的两种方法
把Excel表导入SQL数据库的两种方法SQLServer自身就有导入功能的1、打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入/导出向导,按下一步,2、选择数据源 Microsoft Excel 97-2000,文件名选择要导入的xls文件,按下一步,3、选择目的用于SQL Server 的Microsoft OLE DB提供程序,服务器选择本地(如果是本地数据库的话,如 VVV),使用SQL Server身份验证,用户名sa,密码为空,数据库选择要导入数据的数据库(如 client),按下一步,4、选择用一条查询指定要传输的数据,按下一步,5、按查询生成器,在源表列表中,有要导入的xls文件的列,将各列加入到右边的选中的列列表中,这一步一定要注意,加入列的顺序一定要与数据库中字段定义的顺序相同,否则将会出错,按下一步,6、选择要对数据进行排列的顺序,在这一步中选择的列就是在查询语句中 order by 后面所跟的列,按下一步,7、如果要全部导入,则选择全部行,按下一步,8、则会看到根据前面的操作生成的查询语句,确认无误后,按下一步,9、会看到表/工作表/Excel命名区域列表,在目的列,选择要导入数据的那个表,按下一步,10、选择立即运行,按下一步,11、会看到整个操作的摘要,按完成即可。
将EXCEL的数据提出放在数据集中,在通过循环将从表插入<%'On Error Resume Next'导入Excel电子表格数据到SQL Sever数据库Open_Conn(SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName,SqlConn)'创建数据库连接对象并打开数据库连接Dim ConnStr'SQL Server数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP)ConnStr = "Provider=Sqloledb; User ID=" & SqlUsername & "; Password=" & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source=" & SqlLocalName & ";"Set SqlConn = Server.CreateObject("ADODB.Connection")SqlConn.Open ConnStrIf Err ThenErr.ClearSet SqlConn = NothingResponse.Write "数据连接错误!"Response.EndEnd IfEndClose_Conn(SqlConn)'关闭数据库连接并清除数据库连接对象If IsObject(SqlConn) ThenSqlConn.CloseSet SqlConn = NothingEnd IfEndCall Open_Conn("Shat_EDG","","sa","(local)",SqlConn) '打开本地SQL Server数据库连接Call Open_Conn("Shat_EDG","","sa","ssh03",SqlConn1) '打开远程SQLServer数据库连接Get_EMP_CnName(NTACCNT)'根据用户NT帐号得到用户中文名Dim Sql1,Rs1Sql1 = "Select EMP_CNAME From RF_EMPLOYEE Where EMP_NTACCNT='"&NTACCNT&"'"Set Rs1 = Server.CreateObject("Adodb.RecordSet")Rs1.Open Sql1,SqlConn1,1,1If Rs1.Eof ThenGet_EMP_CnName = ""ElseGet_EMP_CnName = Rs1("EMP_CNAME")End IfRs1.CloseSet Rs1 = NothingEnd %><html><head><title>导入Excel电子表格数据到SQL Sever数据库</title><body bgcolor="#ACD9AF"><center><b>导入Excel电子表格数据到SQL Sever数据库</b></center><FORM METHOD="POST" name="form1">请选择数据源(本地库):<SELECT NAME="Table" title="请选择需要导入数据的表"><option></option><% Dim RsSqlDatabaseTableSet RsSqlDatabaseTable = SqlConn.OpenSchema(20)Do While Not RsSqlDatabaseTable.Eof %><option<%If Trim(Request("Table"))=RsSqlDatabaseTable(2) Then Response.Write " selected"%>><%=RsSqlDatabaseTable(2)%></option> <% RsSqlDatabaseTable.MoveNext:LoopSet RsSqlDatabaseTable = Nothing %></SELECT><input type=submit name=submit ="开始导出"><br>请选择目标表(远程库):<SELECT NAME="Table1" title="请选择需要导入数据的表"><option></option><% Dim RsSqlDatabaseTable1Set RsSqlDatabaseTable1 = SqlConn1.OpenSchema(20)Do While Not RsSqlDatabaseTable1.Eof %><option<%If Trim(Request("Table1"))=RsSqlDatabaseTable1(2) Then Response.Write " selected"%>><%=RsSqlDatabaseTable1(2)%></option> <% RsSqlDatabaseTable1.MoveNext:LoopSet RsSqlDatabaseTable1 = Nothing %></SELECT></FORM><font color=blue>导出过程中请不要刷新页面!</font><br><%If Trim(Request("Table1")) <> "" ThenDim Sql,RsSql = "Select * From Sheet1$" 'Sheet1$是我们实现用SQL Server自身数据转换功能得到的表名Set Rs = SqlConn.Execute(Sql)If Rs.Eof And Rs.Bof ThenResponse.write "没有找到您需要的数据!!<br>"ElseDo While Not Rs.EofSqlInsert = "Insert Into "&Trim(Request("Table1"))&"(EDG_Project_Name,EDG_Project_No,EDG_Project_VM,EDG_Project_VM_CnName ,EDG_Project_M,EDG_Project_M_CnName,EDG_Project_Director,EDG_Project_ Director_CnName) s ('"&Trim(Rs("工程名称"))&"','"&Trim(Rs("工程编号"))&"','"&Trim(Rs("项目副理"))&"','"&Trim(Rs("项目副理"))&" ("&Get_EMP_CnName(Trim(Rs("项目副理")))&")"&"','"&Trim(Rs("项目经理"))&"','"&Trim(Rs("项目经理"))&" ("&Get_EMP_CnName(Trim(Rs("项目经理")))&")"&"','"&Trim(Rs("项目总监"))&"','"&Trim(Rs("项目总监"))&" ("&Get_EMP_CnName(Trim(Rs("项目总监")))&")"&"')"' Response.Write SqlInsert'此处插入的值根据实际数据库结构进行调整SqlConn1.Execute(SqlInsert)'插入Excel表格裏所有东东Rs.MoveNextLoopResponse.Write "<font color=red>恭喜,成功导出数据!^_^</font><br>" End IfRs.CloseSet Rs = NothingEnd IfCall Close_Conn(SqlConn) '关闭Excel数据库连接Call Close_Conn(SqlConn1) '关闭SQL Server数据库连接 %>。
ASP将Excel数据导入到SQLServer的实现代码
ASP将Excel数据导⼊到SQLServer的实现代码复制代码代码如下:<form action="insert.asp" method="post" enctype="multipart/form-data" name="form1" onSubmit="b1_onclick()"> <table width="500" border="1" align="center" cellpadding="0" cellspacing="0"><tr><td colspan="2" bgcolor="#999999" class="t">选择⽂件</td></tr><tr><td colspan="2" class="t"> </td></tr><tr><td width="126" class="t">选择⽂件(excel)</td><td width="368" class="t"><label><input name="filexls" type="file" size="35"></label></td></tr><tr><td colspan="2" class="t"><label><input type="submit" name="Submit" value="导⼊数据"></label><a href="1122.asp" class="t">返回</a></td></tr></table></form><!--#include virtual="/inc/clsdbctrl.asp"--><!--#include virtual="/inc/function.asp"--><%dim upfile_5xSoft_StreamClass upload_5xSoftdim Form,File,VersionPrivate Sub Class_Initializedim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFiledim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStrVersion="任翔专⽤上传程序"if Request.TotalBytes<1 then Exit Subset Form=CreateObject("Scripting.Dictionary")set File=CreateObject("Scripting.Dictionary")set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")upfile_5xSoft_Stream.mode=3upfile_5xSoft_Stream.type=1upfile_5xSoft_Stream.openupfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)vbEnter=Chr(13)&Chr(10)iDivLen=inString(1,vbEnter)+1strDiv=subString(1,iDivLen)iFormStart=iDivLeniFormEnd=inString(iformStart,strDiv)-1while iFormStart < iFormEndiStart=inString(iFormStart,"name=""")iEnd=inString(iStart+6,"""")mFormName=subString(iStart+6,iEnd-iStart-6)iFileNameStart=inString(iEnd+1,"filename=""")if iFileNameStart>0 and iFileNameStart<iFormEnd theniFileNameEnd=inString(iFileNameStart+10,"""")iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFileSize=iEnd-iStart-4elsemFileSize=0end ifset theFile=new FileInfotheFile.FileName=getFileName(mFileName)theFile.FilePath=getFilePath(mFileName)theFile.FileSize=mFileSizetheFile.FileStart=iStart+4theFile.FormName=FormNamefile.add mFormName,theFileelseiStart=inString(iEnd+1,vbEnter&vbEnter)iEnd=inString(iStart+4,vbEnter&strDiv)if iEnd>iStart thenmFormValue=subString(iStart+4,iEnd-iStart-4)elsemFormValue=""end ifform.Add mFormName,mFormValueend ifiFormStart=iformEnd+iDivLeniFormEnd=inString(iformStart,strDiv)-1wendEnd SubPrivate Function subString(theStart,theLen)dim i,c,stempupfile_5xSoft_Stream.Position=theStart-1stemp=""for i=1 to theLenif upfile_5xSoft_Stream.EOS then Exit forc=ascB(upfile_5xSoft_Stream.Read(1))If c > 127 Thenif upfile_5xSoft_Stream.EOS then Exit forstemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c))) i=i+1elsestemp=stemp&Chr(c)End IfNextsubString=stempEnd functionPrivate Function inString(theStart,varStr)dim i,j,bt,theLen,strInString=0Str=toByte(varStr)theLen=LenB(Str)for i=theStart to upfile_5xSoft_Stream.Size-theLenif i>upfile_5xSoft_Stream.size then exit Functionupfile_5xSoft_Stream.Position=i-1if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) thenInString=ifor j=2 to theLenif upfile_5xSoft_Stream.EOS theninString=0Exit forend ifif AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) thennextif InString<>0 then Exit Functionend ifnextEnd FunctionPrivate Sub Class_Terminateform.RemoveAllfile.RemoveAllset form=nothingset file=nothingupfile_5xSoft_Stream.closeset upfile_5xSoft_Stream=nothingEnd SubPrivate function GetFilePath(FullPath)If FullPath <> "" ThenGetFilePath = left(FullPath,InStrRev(FullPath, "\"))ElseGetFilePath = ""End IfEnd functionPrivate function GetFileName(FullPath)If FullPath <> "" ThenGetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)ElseGetFileName = ""End IfEnd functionPrivate function toByte(Str)dim i,iCode,c,iLow,iHightoByte=""For i=1 To Len(Str)c=mid(Str,i,1)iCode =Asc(c)If iCode<0 Then iCode = iCode + 65535If iCode>255 TheniLow = Left(Hex(Asc(c)),2)iHigh =Right(Hex(Asc(c)),2)toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)ElsetoByte = toByte & chrB(AscB(c))End IfNextEnd functionEnd ClassClass FileInfodim FormName,FileName,FilePath,FileSize,FileStartPrivate Sub Class_InitializeFileName = ""FilePath = ""FileSize = 0FileStart= 0FormName = ""End SubPublic function SaveAs(FullPath)dim dr,ErrorChar,iSaveAs=1if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function if FileStart=0 or right(fullpath,1)="/" then exit functionset dr=CreateObject("Adodb.Stream")upfile_5xSoft_Stream.position=FileStart-1upfile_5xSoft_Stream.copyto dr,FileSizedr.SaveToFile FullPath,2dr.Closeset dr=nothingSaveAs=0end functionEnd Class%><%function sqlstr(data)if not isnull(data) thensqlstr="'"& replace(data,"'","''") &"'"elsesqlstr="'"& data &"'"end ifend function%><%session.CodePage=936Server.ScriptTimeOut=600000set upload=new upload_5xsoftset file=upload.file("filexls")%><%if file.fileSize>0 thenfilename=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)filename=filename+"."filenameend=file.filenamefilenameshow=file.filenamefilenameend=split(filenameend,".")if filenameend(1)="xls" thenfilename=filename&filenameend(1)file.saveAs Server.mappath("uploadfiles/"&filename)elseresponse.write "数据格式不对!"response.write "<a href=file_upload.asp>返回"response.end()end ifset file=nothingelseresponse.write "⽂件不能为空!"response.write "<a href=file_upload.asp>返回"response.end()End ifset upload=nothing'上传XLS⽂件结束,下⾯从上传的XLS⽂件中读取数据写⼊到SQL数据库strAddr=server.MapPath("uploadfiles/"&filename)set excelconn=server.createobject("adodb.connection")excelconn.open "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+strAddr+";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"set rs=server.CreateObject("adodb.recordset")set rs1=server.CreateObject("adodb.recordset")sql="select * from [Sheet1$]"rs.open sql,excelconn,1,3if not(rs.bof and rs.eof) thenrs.movenextdo while not rs.eof'response.Write(rs(1))sql1="select * from member"rs1.open sql1,conn,1,3rs1.addnewRandomizeusername=""Do While Len(username)<8 '随机密码位数num1=CStr(Chr((57-48)*rnd+48)) '0~9'num2=CStr(Chr((90-65)*rnd+65)) 'A~Znum3=CStr(Chr((122-97)*rnd+97)) 'a~zusername=username&num1&num3looprs1("username")=usernamers1("password")="bb0391ec1d7bda99"'bamboo123456 if rs(0)<>"" thenrs1("company")=rs(0)end ifif rs(1)<>"" thenrs1("realname")=rs(1)end ifif rs(2)<>"" thenrs1("sex")=sexn(rs(2))end ifif rs(3)<>"" thenrs1("prof")=rs(3)end ifif rs(4)<>"" thenrs1("tel")=rs(4)end ifif rs(5)<>"" thenrs1("mobile")=rs(5)end ifif rs(6)<>"" thenrs1("address")=rs(6)end ifif rs(7)<>"" thenrs1("area")=getclassdname(rs(7),"area","cn")end ifif rs(8)<>"" thenrs1("city")=getclassdname(rs(8),"area","cn")end ifif rs(9)<>"" thenrs1("fax")=rs(9)end ifif rs(10)<>"" thenrs1("comtype")=comtypem(rs(10))end ifif rs(11)<>"" thenrs1("operation")=rs(11)end ifrs1("passed")=1rs1("activated")=1rs1("lastlogintime")=now()rs1.updaters1.closers.movenextloopend ifrs.close()set rs=nothingset rs1=nothingexcelconn.Close()conn.close()set conn=nothingfunction sexn(str)select case strcase "男"sexn=0case "⼥"sexn=1end selectend functionfunction comtypem(str)select case strcase "⽵制品"comtypem=0case "⽵机械"comtypem=1end selectend functionfunction getclassdname(str,tablename,lang)If Not IsNumeric(id) Then Exit Functionset rs2=conn.execute ("select top 1 id from "& tablename &" where classname like '%"&str&"%'")if not rs2.eof ThenIf lang<>"" ThenIf lang="cn" Thengetclassdname=getclassdname & rs2(0)ElseIf lang="en" Thengetclassdname=getclassdname & rs2(0)End IfEnd Ifelsegetclassdname=0end ifrs2.closeEnd Function%><table width="300" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC"> <tr><th bordercolor="#F1F3F8" bgcolor="#999999" class="t" scope="row"> </th></tr><tr><th class="t" scope="row">⽂件<% response.write (filenameshow) %>导⼊成功!</th></tr><tr><th class="t" scope="row"><a href="javascript:self.close()" class="t">关闭窗⼝</a></th></tr><tr><th class="t" scope="row"><a href="1122.asp" class="t">返回</a></th></tr></table>。
将Excel文件数据导入到SqlServer数据库的三种方案
将Excel⽂件数据导⼊到SqlServer数据库的三种⽅案最近在⼀个项⽬中需要⽤到Excel⽂件导⼊数据库的功能,本⼈很懒,所以到⽹上搜了⼀堆⽅法,但是通过对⽐,觉得⼀下三种是⽐较好⽤或者不是很常见的⽅法,希望对⼤家有所帮助。
⽅案⼀:通过OleDB⽅式获取Excel⽂件的数据,然后通过DataSet中转到SQL Server,这种⽅法的优点是⾮常的灵活,可以对Excel表中的各个单元格进⾏⽤户所需的操作。
1. openFileDialog = new OpenFileDialog();2. openFileDialog.Filter = "Excel files(*.xls)|*.xls";3.4. if(openFileDialog.ShowDialog()==DialogResult.OK)5. {6. FileInfo fileInfo = new FileInfo(openFileDialog.FileName);7. string filePath = fileInfo.FullName;8. string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0";9.10. try11. {12. OleDbConnection oleDbConnection = new OleDbConnection(connExcel);13. oleDbConnection.Open();14.15. //获取excel表16. DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);17.18. //获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素19. string tableName = dataTable.Rows[0][2].ToString().Trim();20. tableName = "[" + tableName.Replace("'","") + "]";21.22. //利⽤SQL语句从Excel⽂件⾥获取数据23. //string query = "SELECT classDate,classPlace,classTeacher,classTitle,classID FROM " + tableName;24. string query = "SELECT ⽇期,开课城市,讲师,课程名称,持续时间 FROM " + tableName;25. dataSet = new DataSet();26.27. //OleDbCommand oleCommand = new OleDbCommand(query, oleDbConnection);28. //OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);29. OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query,connExcel);30. oleAdapter.Fill(dataSet,"gch_Class_Info");31. //从excel⽂件获得数据后,插⼊记录到SQL Server的数据表32. DataTable dataTable1 = new DataTable();33.34. SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT classID, classDate,35. classPlace, classTeacher, classTitle, durativeDate FROM gch_Class_Info",sqlConnection1);36.37. //SqlCommandBuilder sqlCB1 = new SqlCommandBuilder(sqlDA1);38.39. sqlDA1.Fill(dataTable1);40.41. foreach(DataRow dataRow in dataSet.Tables["gch_Class_Info"].Rows)42. {43. DataRow dataRow1 = dataTable1.NewRow();44.45. dataRow1["classDate"] = dataRow["⽇期"];46. dataRow1["classPlace"] = dataRow["开课城市"];47. dataRow1["classTeacher"] = dataRow["讲师"];48. dataRow1["classTitle"] = dataRow["课程名称"];49. dataRow1["durativeDate"] = dataRow["持续时间"];50.51. dataTable1.Rows.Add(dataRow1);52. }53.54. Console.WriteLine("新插⼊ " + dataTable1.Rows.Count.ToString() + " 条记录");55. sqlDA1.Update(dataTable1);56.57. oleDbConnection.Close();58.59. }60. catch(Exception ex)61. {62. Console.WriteLine(ex.ToString());63. }64. }⽅案⼆:直接通过SQL语句执⾏SQL Server的功能函数将Excel⽂件转换到SQL Server数据库。
sql查询语句引用excel数据
1. 背景介绍在日常工作中,我们经常需要从Excel表格中提取数据进行分析和统计。
而SQL查询语句可以很方便地用于提取和筛选数据,因此在使用Excel表格时,结合SQL查询语句能够更高效地处理数据。
2. SQL查询语句介绍SQL是结构化查询语言(Structured Query Language)的缩写,是一种专门用于管理关系型数据库的语言。
通过使用SQL查询语句,可以对数据库进行查询、插入、更新和删除操作。
3. Excel数据引用在Excel中,可以使用SQL查询语句来引用数据。
首先打开Excel表格,然后在“数据”选项卡中选择“从其他来源”-“从SQL Server”来建立到SQL数据库的连接。
接下来就可以输入SQL查询语句来从数据库中获取数据,并将数据呈现在Excel表格中。
4. SQL查询语句示例下面是一些常用的SQL查询语句示例,以便在Excel中引用数据:- 查询表中所有记录:```sqlSELECT * FROM table_name;```- 查询表中特定条件的记录:```sqlSELECT * FROM table_name WHERE condition;```- 查询表中特定字段的记录:```sqlSELECT column1, column2 FROM table_name;```- 查询表中的记录并进行排序:```sqlSELECT * FROM table_name ORDER BY column_name;```5. SQL查询语句的应用通过在Excel中使用SQL查询语句,可以方便地从数据库中提取需要的数据。
可以根据业务需求编写不同的SQL查询语句,从而实现数据的灵活筛选和统计分析。
这样可以节省大量的时间和精力,提高工作效率。
6. SQL查询语句的注意事项在使用SQL查询语句引用Excel数据时,需要注意以下几点:- 确保SQL查询语句的正确性和准确性,避免因语法错误导致数据提取错误。
excel表导入sql数据库的教程
excel表导入sql数据库的教程在Excel中录入好数据以后经常需要把Excel表导入到SQL中里去,具体如何导入呢?接下来是店铺为大家带来的excel表导入sql数据库的教程,供大家参考。
excel表导入sql数据库的教程:Excel表导入sql数据库步骤1:打开SQL Server Management Studio,按图中的路径进入导入数据界面。
Excel表导入sql数据库步骤2:导入的时候需要将EXCEL的文件准备好,不能打开。
点击下一步。
Excel表导入sql数据库步骤3:数据源:选择“Microsoft Excel”除了EXCEL类型的数据,SQL还支持很多其它数据源类型。
Excel表导入sql数据库步骤4:选择需要导入的EXCEL文件。
点击浏览,找到导入的文件确定。
Excel表导入sql数据库步骤5:再次确认文件路径没有问题,点击下一步。
Excel表导入sql数据库步骤6:默认为是使用的WINODWS身份验证,改为使用SQL身份验证。
输入数据库密码,注意:数据库,这里看看是不是导入的数据库。
也可以在这里临时改变,选择其它数据库。
Excel表导入sql数据库步骤7:选择导入数据EXCEL表内容范围,若有几个SHEET表,或一个SHEET表中有些数据我们不想导入,则可以编写查询指定的数据进行导入。
点击下一步。
Excel表导入sql数据库步骤8:选择我们需要导入的SHEET表,比如我在这里将SHEET表名改为price,则导入后生面的SQL数据库表为price$。
点击进入下一步。
Excel表导入sql数据库步骤9:点击进入下一步。
Excel表导入sql数据库步骤10:在这里完整显示了我们的导入的信息,执行内容,再次确认无误后,点击完成,开始执行。
Excel表导入sql数据库步骤11:可以看到任务执行的过程和进度。
Excel表导入sql数据库步骤12:执行成功:我们可以看看执行结果,已传输1754行,表示从EXCEL表中导入1754条数据,包括列名标题。
关于EXCEL表格导入导出数据库的代码
关于EXCEL表格导入\导出数据库的代码导入/导出Excel--从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:/*===================================================================*/ --如果接受数据导入的表已经存在insert into 表select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DA TABASE=c:\test.xls',sheet1$)--如果导入数据并生成表select * into 表fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DA TABASE=c:\test.xls',sheet1$)/*===================================================================*/ --如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DA TABASE=c:\test.xls',sheet1$)select * from 表--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:--导出表的情况EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'--导出查询的情况EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'/*--说明:c:\test.xls 为导入/导出的Excel文件名.sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用.--*/--下面是导出真正Excel文件的方法:if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_exporttb]GO/*--数据导出EXCEL导出表中的数据到Excel,包含字段名,文件为真正的Excel文件,如果文件不存在,将自动创建文件,如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10(引用请保留此信息)--*//*--调用示例p_exporttb @tbname='地区资料',@path='c:\',@fname='aa.xls'--*/create proc p_exporttb@tbname sysname, --要导出的表名@path nvarchar(1000), --文件存放目录@fname nvarchar(250)='' --文件名,默认为表名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out intdeclare @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+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONL Y=FALSE'+';CREATE_DB="'+@sql+'";DBQ='+@sqlelseset @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES'+';DATABASE='+@sql+'"'--连接数据库exec @err=sp_oacreate 'adodb.connection',@obj outif @err0 goto lberrexec @err=sp_oamethod @obj,'open',null,@constrif @err0 goto lberr/*--如果覆盖已经存在的表,就加上下面的语句--创建之前先删除表/如果存在的话select @sql='drop table ['+@tbname+']'exec @err=sp_oamethod @obj,'execute',@out out,@sql--*/--创建表的SQLselect @sql='',@fdlist=''select @fdlist=@fdlist+',['++']',@sql=@sql+',['++'] '+casewhen like '%char'then case when a.length>255 then 'memo'else 'text('+cast(a.length as varchar)+')' endwhen like '%int' or ='bit' then 'int'when like '%datetime' then 'datetime'when like '%money' then 'money'when like '%text' then 'memo'else endFROM syscolumns a left join systypes b on a.xtype=b.xusertype where not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp')and object_id(@tbname)=idselect @sql='create table ['+@tbname+']('+substring(@sql,2,8000)+')',@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,'execute',@out out,@sqlif @err0 goto lberrexec @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) returnlberr:exec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgoif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_exporttb]GO/*--数据导出EXCEL导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件如果文件不存在,将自动创建文件如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10(引用请保留此信息)--*//*--调用示例p_exporttb @sqlstr='select * from 地区资料',@path='c:\',@fname='aa.xls',@sheetname='地区资料'--*/create proc p_exporttb@sqlstr varchar(8000), --查询语句,如果查询语句中使用了order by ,请加上top 100 percent@path nvarchar(1000), --文件存放目录@fname nvarchar(250), --文件名@sheetname varchar(250)='' --要创建的工作表名,默认为文件名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out intdeclare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测if isnull(@fname,'')='' set @fname='temp.xls'if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')--检查文件是否已经存在if right(@path,1)'\' set @path=@path+'\'create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONL Y=FALSE'+';CREATE_DB="'+@sql+'";DBQ='+@sqlelseset @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES'+';DATABASE='+@sql+'"'--连接数据库exec @err=sp_oacreate 'adodb.connection',@obj outif @err0 goto lberrexec @err=sp_oamethod @obj,'open',null,@constrif @err0 goto lberr--创建表的SQLdeclare @tbname sysnameset @tbname='##tmp_'+convert(varchar(38),newid())set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'exec(@sql)select @sql='',@fdlist=''select @fdlist=@fdlist+',['++']',@sql=@sql+',['++'] '+casewhen like '%char'then case when a.length>255 then 'memo'else 'text('+cast(a.length as varchar)+')' endwhen like '%int' or ='bit' then 'int'when like '%datetime' then 'datetime'when like '%money' then 'money'when like '%text' then 'memo'else endFROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertypewhere not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp')and a.id=(select id from tempdb..sysobjects where name=@tbname)if @@rowcount=0 returnselect @sql='create table ['+@sheetname+']('+substring(@sql,2,8000)+')',@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,'execute',@out out,@sqlif @err0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES ;DATABASE='+@path+@fname+''',['+@sheetname+'$])'exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')set @sql='drop table ['+@tbname+']'exec(@sql)returnlberr:exec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo。
EXCEL页面数据快速写入SQL数据库
EXCEL页⾯数据快速写⼊SQL数据库将EXCEL数据存⼊SQL表, ⼀万⾏记录⼤概5秒Dim conn As New ADODB.ConnectionDim CNN As New ADODB.Connection'Dim rst As New ADODB.RecordsetDim Sql As StringDim j, v As IntegerConst cnnstr = "Provider = SQLOLEDB;" & _"Data Source = ip;" & _"Initial Catalog = apsdb;User ID =sa;Password = pw;"conn.Open cnnstrconn.Execute "truncate table tjnpg"Application.EnableEvents = FalseOn Error GoTo ErrHandlej = ActiveSheet.Range("A65535").End(xlUp).Rowv = Application.VersionIf v = 11Then'EXCEL2003CNN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullNameElseCNN.Open "Provider=Microsoft.Ace.OLEDB.12.0;Extended Properties=excel 12.0;Data Source=" & ThisWorkbook.FullNameEnd If' Sql = "select 部门,交期,产品号,⽣产订单号,旧物料号,物料描述 from [Sheet1$]"' rst.Open Sql, CNN, adOpenKeyset, adLockOptimistic' Debug.Print rst.RecordCountSql = "INSERT INTO [odbc;Driver={SQL Server};" & _"Server=ip;Database=apsdb;" & _"UID=sa;PWD=pw].tjnpg " & _"select 部门,交期,产品号,⽣产订单号,旧物料号,物料描述 from [Sheet1$]"CNN.Execute SqlMsgBox"存⼊成功.", vbInformation, "诚益资讯"'关闭数据连接CNN.CloseSet rst = NothingSet CNN = Nothingconn.CloseSet conn = NothingGoTo ExitHandleExitHandle:Application.EnableEvents = TrueExit SubErrHandle:Application.EnableEvents = TrueMsgBox Err.Description, vbCritical, "诚益资讯"View Code。
Excel导入Sql
Excel导入SQL方法一:利用BCP导入SQL中,比通过Excel——dataTable——SQL效率高,可用于处理大量数据的Excel实例:通过OpenFileDialog对话框选择Excel,导入数据库Lab中,若Lab中表sheet1已存在则直接导入,不存在则创建sheet1再导入private void button1_Click(object sender, EventArgs e){//测试,将excel中的sheet1导入到sqlserver中string connString = "server=localhost;uid=sa;pwd=llj;database=Lab";System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();if (fd.ShowDialog() == DialogResult.OK){TransferData(fd.FileName, "sheet1", connString);}}public void TransferData(string excelFile, string sheetName, string connectionString) {DataSet ds = new DataSet();try{//获取全部数据string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;";OleDbConnection conn = new OleDbConnection(strConn);conn.Open();string strExcel = "";OleDbDataAdapter myCommand = null;strExcel = string.Format("select * from [{0}$]", sheetName);myCommand = new OleDbDataAdapter(strExcel, strConn);myCommand.Fill(ds, sheetName);//如果目标表不存在则创建string strSql = string.Format("if object_id('{0}') is null create table {0}(", sheetName);foreach (System.Data.DataColumn c in ds.Tables[0].Columns){strSql += string.Format("[{0}] varchar(255),", c.ColumnName);}strSql = strSql.Trim(',') + ")";using (System.Data.SqlClient.SqlConnection sqlconn = newSystem.Data.SqlClient.SqlConnection(connectionString)){sqlconn.Open();System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand();mandText = strSql;command.ExecuteNonQuery();sqlconn.Close();}//用bcp导入数据using (System.Data.SqlClient.SqlBulkCopy bcp = newSystem.Data.SqlClient.SqlBulkCopy(connectionString)){bcp.SqlRowsCopied += newSystem.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);bcp.BatchSize = 100;//每次传输的行数bcp.NotifyAfter = 100;//进度提示的行数bcp.DestinationTableName = sheetName;//目标表bcp.WriteToServer(ds.Tables[0]);}}catch (Exception ex){System.Windows.Forms.MessageBox.Show(ex.Message);}}//进度显示void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e) {this.Text = e.RowsCopied.ToString();this.Update();}方法二//思路:将Excle文件导入myDataSet——从Sql中得到SqlDataSet——使用DataTable的ImportRow函数将myDataSet的数据填充到SqlDataSet——使用SqlDataAdapter的Update()函//数更新数据库private DataSet CreateDataSource(){string strConn;strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =E:\\小学\\b.xls;Extended Properties=Excel 8.0";OleDbConnection conn = new OleDbConnection(strConn);OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$] ", strConn);DataSet myDataSet = new DataSet();myCommand.Fill(myDataSet);return myDataSet;}SqlConnection conn;SqlDataAdapter sda;private Boolean dbUpdate(){conn = new SqlConnection("Server=.;Database=Lab;Trusted_Connection=SSPI;");sda = new SqlDataAdapter("select * from [Lab2]", conn);DataSet ds = new DataSet();sda.Fill(ds);System.Data.DataTable dtUpdate = new System.Data.DataTable();dtUpdate = ds.Tables[0];dtUpdate.Rows.Clear();DataSet dtSet = CreateDataSource();System.Data.DataTable dtShow = dtSet.Tables[0];for (int i = 0; i < dtShow.Rows.Count; i++){dtUpdate.ImportRow(dtShow.Rows[i]);//将dtShow中数据复制到dtUpdate中}this.conn.Open();SqlCommandBuilder CommandBuiler;//自动生成单表命令,用于对DataSet所做的更改于关联的SQL Server数据库的更改相协调CommandBuiler = new SqlCommandBuilder(this.sda);this.sda.Update(dtUpdate);//为dataTable dtUpdate的插入,删除,更改的行调用相应得insert,delete,update语句,即更新数据集,更新数据库this.conn.Close();dtUpdate.AcceptChanges();return true;}private void button1_Click(object sender, EventArgs e){dataGridView1.DataSource = null;dbUpdate();SqlConnection conn = newSqlConnection("Server=.;Database=Lab;Trusted_Connection=SSPI;");SqlDataAdapter sda = new SqlDataAdapter("select * from [Lab2] where 实验室=100", conn);DataSet ds = new DataSet();sda.Fill(ds);dataGridView1.DataSource =ds.Tables[0]; }。
把excel表格里的数据导入sql数据库的两种方法
把excel表格⾥的数据导⼊sql数据库的两种⽅法
本来最近在研究微信公众平台的,⽼⼤临时交我个任务,把excel表格⾥的数据导⼊sql数据库,我想这so easy嘛。
没想都在上⾯消磨了两天...
把情况介绍下:在数据库中有如下这样结构的表(A表)
我只取关键的及列⾥⾯还有很多数据。
有⼀张id和name对照的excel⽂件(B表)和N张结构类似的excel表(C表)(没有id那⼀列)
我的任务在B表中找到C表中数据对应的id后,然后将id加到C表中,最后根据id是唯⼀的,⽤C表的数据去更新A表的数据。
这⾥主要涉及了excel表格和数据库表间的转化。
是MySQL for Excel 是excel直接操作mysql数据库的⼀个插件,你可以像修改excel表格⼀样修改数据库,当然也可以进⾏表的合并等。
插件的安装,⼤家百度吧。
在使⽤这个的时候遇到了个问题,MySQL for Excel 能连接到本地的数据库,但在服务器上的数据库总是连接不上。
⽅案⼀破产
这⾥要注意两点⼀是excel表格中的⼿机号码要设置为⽂本格式 ,⼆是统⼀⽤繁体字。
出现空格乱码时,删除空格重写输⼊。
excel表格导入到sql的教程
excel表格导入到sql的教程
在EXCEL中录入好数据以后经常需要用导入到SQL的数据库里进一步的编辑,或许有的朋友并不知道Excel表格该如何导入到SQL中里去,如果不懂的朋友欢迎一起来学习探索吧。
下面是由店铺分享的excel表格导入到sql的教程,以供大家阅读和学习。
excel表格导入到sql的教程:
Excel表格导入到sql步骤1:选择要导入的数据库---任务---导入数据:
Excel表格导入到sql步骤2:选择excel数据源--浏览文件。
注意如果excel中首行数据为字段,应勾选“首行包含列名称”。
Excel表格导入到sql步骤3:按照提示单击下一步后选择服务器填写验证信息和目标数据库:
Excel表格导入到sql步骤4:点击下一步,确定导入的类型:
Excel表格导入到sql步骤5:选择数据库--选择源表和原视图,如果不选则目标,则会在数据库中自动生成同名的表,并把数据导入进去。
Excel表格导入到sql步骤6:然后默认下一步,无须保存SSIS包,直接默认立即运行:
Excel表格导入到sql步骤7:最后点击完成:。
excell表格数据导入到SQL2000数据库
EXCELL文件导入到SQLSERVER 2000的方法
SQLSERVER 2000数据库的基础数据录入工作是一项比较繁重的体力活,特别是前期已经有了大量的EXCELL数据整理表格,要重新输入到SQL时,方法和效率显得格外重要。
根据我的心得,为大家提供一种简单的方法,实现快速的将EXCELL数据表导入到SQL数据表。
案例使用SQLSERVER 2000
第一步:将整理好的EXCELL另存为文本文件(制表符分隔)
图1
第二步:打开企业管理器,选择数据库,并导入数据
图2
第三步:选择数据源为“文本文件”,并链接另存为的文本文件
第三步:新建数据库和数据表
第四步:导入数据
第五步:查看数据库
这样导入的数据表中,没有主键字段,别忘了去设计数据表,定义主键。
大功告成,祝你工作愉快!。
如何把Excel工作表中数据导入数据库
如何把Excel工作表中数据导入数据库如何把Excel工作表中数据导入数据库大家知道要如何把Excel工作表中数据导入数据库呢?有什么方法呢?下面一起来看看!我想至少有这样两种比较容易实现的方法:1、直接用Sql语句查询2、先用excle中的数据生成xml文件,再把xml导入数据库第一种方法(方法二以后再试),找到联机丛书里实现此功能的Sql 语句如下:SELECT* FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0', 'DataSource="c:Financeaccount.xls";UserID=Admin;Password=;E xtendedproperties=Excel5.0')…xactions语句是有了,但我还是试了很久,因为各个参数具体该怎么设置它没有说。
Data Source就是excel文件的路径,这个简单;UserId、Password和Extended properties这三个属性我改成了各种各样的与本机有关的用户名、密码以及excel版本都不对,最后用上面例子里的.值“User ID=Admin;Password=;Extended properties=Excel 5.0”才成功了,晕啊;最后个“xactions”更是查了很多资料,其实就仅仅是excel文件里所选的工作表名而已,怪我对excel不够熟悉了,另外注意默认的Sheet1要写成[Sheet1$]最后,看看我成功的测试数据库里建好一个表testTable_1,有5个字段id, name, date, money, content,C盘下book1.xls文件的sheet1工作表里写好对应的数据并设好数据类型,执行如下插入语句:intotestTable_1([name],[date],[money],[content]) Select[姓名],[日期],[金额],[内容] FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0','DataSource="C:Book1.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')…[Sheet1$]select里的列名我一开始用*代替,但发现输出顺序与我预期的不同,是“金额、内容、日期、姓名”,不知道具体有什么规律,就老老实实写名字了。
Excel处理SQL数据库教程2
Excel处理SQL数据库教程(二)接着写1)用编程的方式向excel中导入数据这个时候就要使用到了recordset这个东东了,Sub 显示数据()…建立一个连接Dim cn As New ADODB.ConnectionDim strCn As StringDim strCom As StringDim rs As New ADODB.RecordsetDim i …i是行号strCn = "Provider=sqloledb;Server=jszxfwq;Database=hszx;Uid=sa;Pwd=;"cn.Open strCn…连接建立完了以后将查询的结果产生一个数据集strCom=”select * from a”rs.Open strCom, cn…读取这个数据集i=1Do While Not rs.EOFSheets(“测试”).Cells(i,1).value=rs(“a”) …注意这里的字段名a可是加了引号的了Sheets(“测试”).Cells(i,2).value=rs(“b”)i=i+1rs.MoveNextLoopSet rs = Nothingcn.CloseEnd Sub在数据库中的内容如图在电子表格中的内容如下,注意这个工作表的名称你要自己改为”测试”2)同样用编程的方法还有不用数据集的方法,而是用代码使用查询,将结果返回到工作表中。
其实只要录制一个宏就可以了,以下是我对录制的宏进行的更改,只要你更改很少的部分就可以直接使用了。
Sub 用查询的方法显示数据()With ActiveSheet.QueryTables.Add(Connection:= _"ODBC;DRIVER=SQL Server;SERVER=JSZXFWQ;UID=sa;PWD=;APP=Microsoft Office XP;WSID=ZJTRUEKING;DATABASE=hszx" _, Destination:=Sheets("测试").Range("A1")) …这个A1表示的导入数据的开始位置.CommandText = Array("SELECT a,b from a") …写sql语句了,最简单的还是要学学的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
set rssqldatabasetable = nothing %>
</select><input type=submit name=submit value="開始導出">
<br>請選擇目標表(远程库):
<select name="table1" title="请选择需要导入数据的表">
创建数据库连接对象并打开数据库连接
dim connstr
sql server数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用ip)
connstr = "provider=sqloledb; user id=" & sqlusername & "; password=" & sqlpassword & "; initial catalog = " & sqldatabasename & "; data source=" & sqllocalname & ";"
response.write sqlinsert
此处插入的值根据实际数据库结构进行调整
sqlconn1.execute(sqlinsert)插入excel表格裏所有東東
rs.movenext
loop
response.write "<font color=red>恭喜,成功導出数据!^_^</font><br>"
else
do while not rs.eof
sqlinsert = "insert into "&trim(request("table1"))&" (edg_project_name,edg_project_no,edg_project_vm,edg_project_vm_cnname,edg_project_m,edg_project_m_cnname,edg_project_director,edg_project_director_cnname) values ("&trim(rs("工程名称"))&","&trim(rs("工程编号"))&","&trim(rs("项目副理"))&","&trim(rs("项目副理"))&"("&get_emp_cnname(trim(rs("项目副理")))&")"&","&trim(rs("项目经理"))&","&trim(rs("项目经理"))&"("&get_emp_cnname(trim(rs("项目经理")))&")"&","&trim(rs("项目总监"))&","&trim(rs("项目总监"))&"("&get_emp_cnname(trim(rs("项目总监")))&")"&")"
<% rssqldatabasetable1.movenext:loop
set rssqldatabasetable1 = nothing %>
</select>
</form>
<font color=blue>導出過程中請不要刷新頁面!</font><br>
<%
if trim(request("table1")) <> "" then
<html>
<head>
<title>导入excel电子表格数据到sql sever数据库</title>
<body bgcolor="#acd9af">
<center><b>导入excel电子表格数据到sql sever数据库</b></center>
<form method="post" name="form1">
上次给大家提供了一个从excel电子表格导入到sql server数据库的方法,前提条件是机器上要装有office 里的excel组件。今天再为大家提供另一种方法:不需要安装excel也可以导入到我们的sql server数据库。首先用sql server自身的数据转换功能把excel导入到 sql server中,下面的示例中导入后的表名为:sheet1$,然后我们再从这个库中把数据导入到我们自己的系统的数据表中。(这样一来就是2个sql server表中的数据互相转换的问题了)。总之,2种方法的原理都是先从一个数据源中读出所有数据,然后通过循环,把源数据插入到我们的目标表中。
do while not rssqldatabasetable.eof %>
<option<%if trim(request("table"))=rssqldatabasetable(2) then response.write " selected"%>><%=rssqldatabasetable(2)%></option>
set sqlconn = server.createobject("adodb.connection")
sqlconn.open connstr
if err then
err.clear
set sqlconn = nothing
response.write "数据连接错误!"
dim sql,rs
sql = "select * from sheet1$" sheet1$是我们实现用sql server自身数据转换功能得到的表名
set rs = sqlconn.execute(sql)
if rs.eof and rs.bof then
response.write "没有找到您需要的数据!!<br>"
response.end
end if
end function
function close_conn(sqlconn)
关闭数据库连接并清除数据库连接对象
if isobject(sqlconn) then
sqlconn.close
set sqlconn = nothing
end if
end function
call open_conn("shat_edg","","sa","(local)",sqlconn) 打开本地sql server数据库连接
call open_conn("shat_edg","","sa","ssh03",sqlconn1) 打开远程sql server数据库连接
endnothing
end if
call close_conn(sqlconn) 关闭excel数据库连接
call close_conn(sqlconn1) 关闭sql server数据库连接 %>
</body>
</html>
rs1.open sql1,sqlconn1,1,1
if rs1.eof then
get_emp_cnname = ""
else
get_emp_cnname = rs1("emp_cname")
end if
rs1.close
set rs1 = nothing
end function %>
請選擇數據源(本地库):
<select name="table" title="请选择需要导入数据的表">
<option></option>
<% dim rssqldatabasetable
set rssqldatabasetable = sqlconn.openschema(20)
function get_emp_cnname(ntaccnt)
根据用户nt帐号得到用户中文名
dim sql1,rs1
sql1 = "select emp_cname from rf_employee where emp_ntaccnt="&ntaccnt&""
set rs1 = server.createobject("adodb.recordset")
<option></option>