图解把EXCEL数据导入到SQL SERVER 2008
- 格式:pdf
- 大小:1.01 MB
- 文档页数:13
实验环境: WIN XP ,MS Office Excel 2007 ,Sql Server 2008准备数据: Excel文档: D:\test\重复出修率.xlsx方法一:第一步: 打开SSMS:【开始】→【所有程序】→【Microsoft Sql Server 2008】→【Sql Server Management Studio】第二步: 连接数据库:在’对象资源管理器’中点击【连接】→【数据库引擎】登陆服务器(P.S:如果没有看到’对象资源管理器’,点击左上角的【视图】→【对象管理器】)第三步: 登陆成功后,右击你要导入数据的数据库名,我这里数据库名是’TEST’右击【TEST】→【任务】→【导入数据】这时候会出现一个向导:点击【下一步】在弹出的窗口中,【数据源】选择:Microsoft Excel ;【Excel文件路径】就选择你本地电脑存放Excel文档的路径,我这里是D:\test\重复出修率.xlsx 【Excel版本】选择Excel 2007 (可以根据你office的版本,选择其他如Excel 2003等等。
)选中【首行包含列名称】框,最后点击【下一步】“首行包含列名称”是指Excel中的首行数据插入数据库后将作为新建表的列名.在弹出窗口中,【目标】可以采取默认的,【服务器名称】也是一样可以选择身份验证,最后选择你要插入数据到哪个数据库中。
如我这里选的是’TEST’,选好后点击【下一步】如果就把Excel数据插入一个新表,就选择【复制一个或多个表或视图的数据】如果想把Excel数据插入到已存在的一张表中,则选择下面的【编写查询以指定要传输的数据】我这里是选择上面一个,然后点击【下一步】接着会弹出Excel表中的sheet表名字,如果你没有修改过sheet表名字,则可能显示的是’shee1$’, ’shee2$’, ’shee3$’等等.然后你选中你想要导入的哪张表的数据,我这里导入的是【’aug$’】选中后,右边的【目标】栏位中会出现内容,dbo是指数据库的架构名,aug$只是新建的表名,如果你想修改表明,双击就可以表明进入编辑状态就可以修改了。
从SQL Server中导入/导出Excel的基本方法从sql server中导入/导出excel 的基本方法/*=========== 导入/导出excel 的基本方法===========*/从excel文档中,导入数据到sql数据库中,很简单,直接用下面的语句:/*=============================================*/--假如接受数据导入的表已存在insert into 表select * fromopenrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=c:test.xls,sheet1$)--假如导入数据并生成表select * into 表fromopenrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=c:test.xls,sheet1$)/*===========================================*/--假如从sql数据库中,导出数据到excel,假如excel文档已存在,而且已按照要接收的数据创建好表头,就能够简单的用:insert into openrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=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 frompubs..authors order by au_lname" queryout "c:test.xls" /c -/s"服务器名" /u"用户名" -p"密码"/*--说明:c:test.xls 为导入/导出的excel文档名.sheet1$ 为excel文档的工作表名,一般要加上$才能正常使用.--*/--上面已说过,用bcp导出的是类excel文档,其实质为文本文档,--要导出真正的excel文档.就用下面的方法/*--数据导出excel导出表中的数据到excel,包含字段名,文档为真正的excel文档,假如文档不存在,将自动创建文档,假如表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10--*//*--调用示例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, nisprocedure) = 1)drop procedure [dbo].[p_exporttb]gocreate proc p_exporttb@tbname sysname, --要导出的表名@path nvarchar(1000), --文档存放目录@fname nvarchar(250)= --文档名,默认为表名asdeclare @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+@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=;readonly=false +;create_db=" +;database=+@sql+"--连接数据库exec @err=sp_oacreate adodb.connection,@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,open,null,@constrif @err<>0 goto lberr/*--假如覆盖已存在的表,就加上下面的语句--创建之前先删除表/假如存在的话select @sql=drop table [+@tbname+]exec @err=sp_oamethod @obj,execute,@out out,@sql--*/--创建表的sqlselect @sql=,@fdlist=select @fdlist=@fdlist+,[++],@sql=@sql+,[++]+case when in(char,nchar,varchar,nvarchar) thentext(+cast(case when a.length>255 then 255 else a.length end as varchar)+)when in(tynyint,int,bigint,tinyint) then intwhen in(smalldatetime,datetime) then datetimewhen in(money,smallmoney) then moneyelse endfrom syscolumns a left join systypes b on a.xtype=b.xusertypewhere notin(image,text,uniqueidentifier,sql_variant,ntext,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 @err<>0 goto lberrexec @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) returnexec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo--上面是导表的,下面是导查询语句的./*--数据导出excel导出查询中的数据到excel,包含字段名,文档为真正的excel文档,假如文档不存在,将自动创建文档,假如表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10--*//*--调用示例p_exporttb @sqlstr=select * from 地区资料,@path=c:,@fname=aa.xls,@sheetname=地区资料--*/if exists (select * from dbo.sysobjects where id = object_id(n[dbo].[p_exporttb]) and objectproperty(id, nisprocedure) = 1)drop procedure [dbo].[p_exporttb]gocreate proc p_exporttb@sqlstr varchar(8000), --查询语句,假如查询语句中使用了order by ,请加上top 100 percent@path nvarchar(1000), --文档存放目录@fname nvarchar(250), --文档名@sheetname varchar(250)= --要创建的工作表名,默认为文档名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=temp.xlsif 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=;readonly=false +;create_db=" +;database=+@sql+"--连接数据库exec @err=sp_oacreate adodb.connection,@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,open,null,@constrif @err<>0 goto lberr--创建表的sqldeclare @tbname sysnameset @tbname=##tmp_+convert(varchar(38),newid())set @sql=select * into [+@tbname+] from(+@sqlstr+) aexec(@sql)select @sql=,@fdlist=select @fdlist=@fdlist+,[++],@sql=@sql+,[++]+case when in(char,nchar,varchar,nvarchar) thentext(+cast(case when a.length>255 then 255 else a.length end as varchar)+)when in(tynyint,int,bigint,tinyint) then intwhen in(smalldatetime,datetime) then datetimewhen in(money,smallmoney) then moneyelse endfrom tempdb..syscolumns a left join tempdb..systypes b ona.xtype=b.xusertypewhere notin(image,text,uniqueidentifier,sql_variant,ntext,varbinary,binary,timestamp) and a.id=(select id from tempdb..sysobjects where name=@tbname) select @sql=create table [+@sheetname+](+substring(@sql,2,8000)+),@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj,execute,@out out,@sqlif @err<>0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql=openrowset(microsoft.jet.oledb.4.0,excel 5.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 out lbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo。
本文循序渐进地演示如何用不同的方法将数据从Microsoft Excel 工作表导入到Microsoft SQL Server 数据库。
回到顶端技术说明本文中的示例使用以下工具导入Excel 数据:∙SQL Server 数据传输服务(DTS)∙Microsoft SQL Server 2005 Integration Services (SSIS)∙SQL Server 链接服务器∙SQL Server 分布式查询∙ActiveX 数据对象(ADO) 和Microsoft OLE DB Provider for SQL Server∙ADO 和Microsoft OLE DB Provider for Jet 4.0回到顶端要求下面的列表列出了推荐使用的硬件、软件、网络架构以及所需的Service Pack:∙Microsoft SQL Server 7.0、Microsoft SQL Server 2000 或Microsoft SQL Server 2005 的可用实例∙Microsoft Visual Basic 6.0(针对使用Visual Basic 的ADO 示例)本文的部分内容假定您熟悉下列主题:∙数据传输服务∙链接服务器和分布式查询∙Visual Basic 中的ADO 开发回到顶端示例导入与追加本文使用的示例SQL 语句演示了“创建表”查询。
该查询通过使用SELECT...INTO...FROM 语法将Excel 数据导入新的SQL Server 表。
如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用INSERT INTO...SELECT...FROM 语法将这些语句转换成追加查询。
使用DTS 或SSIS可以使用“SQL Server Data Transformation Services (DTS) 导入向导”或“SQL Server 导入和导出向导”将Excel 数据导入到SQL Server 表中。
SQL_Server数据与Excel表的导入导出SQL Server与Excel的数据交换几乎所有的数据库管理者或者是与数据库打过交道的朋友,几乎都或多或少的了解并使用过数据导入导出的功能以便完成支持诸如数据合并、归档和分析等任务,以及开发应用程序或升级数据库或服务器,而这一切的便利都已经被SQL Server中的数据转换服务(DTS)囊括其中,它提供了一套图形化工具和可编程对象,以帮助管理员和开发人员和需要进行数据维护的人员解决数据移动问题,其中包括将数据从分散的数据源中提取出来,并且转换、合并到一个或多个目标位置。
可以将任务组、工作流操作以及约束条件收集起来形成DTS 软件包,然后安排它定期运行或在某些事件发生后运行。
首先我们来先认识一下什么是DTS,它是一组工具,用于在一个或多个数据源(如Microsoft SQL Server、Microsoft Excel或Microsoft Access)间导入、导出和转换各种数据。
通过OLE DB(一种数据访问的开放式标准)提供连接,通过用于ODBC的OLE DB 提供程序来支持ODBC(开放式数据库连接)数据源。
在这里我们将以具体的实例来介绍DTS数据的导入导出功能。
例:使用DTS向导导出自己建立的dmtjxxb数据库中的dmtjxxb_register 表,到Excel表中。
操作步骤为:(1)启动SQL Server企业管理器(Enterprise Manager)后,点击SQL Server组,选择指定的服务器,如此次操作的数据库是我本地的数据库,如图:SQL Server企业管理器本地数据库选中要导出的数据库名称,点击鼠标右键,在弹出的菜单点击“所有任务”选择“导出数据”选项,如下图所示,就会弹出数据导入导出向导。
(2)单击“下一步”按钮,打开选择数据源对话框,如下图所示:首先在“数据源”旁的下拉列表中选择数据源。
在本例中选择Microsoft OLE DB Provider for SQL Server。
把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数据库连接 %>。
[方法一]如何把EXCEL中的数据导入SQL SERVER数据库中(2010-12-30 17:16:53)有时候需要把E XCEL中的数据导入到数据库中。
一条一条的在数据库中建数据显然不可取,如何找一条快捷的途径进行转换是很有必要的。
在这里主要是介绍一种在EX CEL中用V BA进行编程,把EXCEL的数据转换成S QL语句,存入到一个文件中,然后在数据库服务器上提交这些SQL语句来实现。
一、两边的数据格式(一)数据库的表结构生成数据库表的SQL语句如下:createtable Address(ID Integer identit y(1,1) not null primary key,Name varchar(20) not null,Dept varchar(50),Spell varchar(20),Mobile varchar(11),Tel varchar(20),EMail varchar(30),VOIP varchar(6),Remark varchar(200),);EXCEL中的数据格式(二)转换的VBA函数Sub Generat eSQL()Dim i, k As LongDim s As StringOpen "d:\txl.sql" For OutputAs #1 '打开一个文件以供输入SQL语句i = 2While Cells(i, 1) <> ""s = "INSERTINTO ADDRESS (Name,Dept,Mobile,Tel,VOIP,EMail) VALUES("For k = 1 To 5s = s & "'" & Cells(i, k) & "',"Nexts = s & "'" & Cells(i, 6) & "');"Print #1, s '输出一条语句至文件i = i + 1WendClose #1 '关闭文件End Sub以上的代码用于逐行把数据转换成SQL语句写入“d:\txl.sql”中。
Excel与SQLServer数据交互第⼀部分:在Excel导⼊SQL Server中的数据:1. 在“数据”选项卡上的“获取外部数据”组中,单击“⾃其他来源”,然后单击“来⾃SQL Server”。
2. 在“服务器名称”框中,键⼊要连接的 SQL Server 计算机的名称。
3. 在“登录凭据”下,执⾏下列操作之⼀:3.1. 要使⽤当前的 Microsoft Windows⽤户名和密码,请单击“使⽤Windows ⾝份验证”。
2. 要输⼊数据库⽤户名和密码,请单击“使⽤下列⽤户名和密码”,然后在相应的“⽤户名”和“密码”框中键⼊您的⽤户名和密码。
3. 在“选择数据库”下,选择⼀个数据库。
在“连接到指定表”下,选择⼀个特定的表或视图。
或者,也可以清除“连接到指定表”复选框,以便系统向使⽤此连接⽂件的其他⽤户提⽰表和视图的列表。
4. (可选)在“⽂件名”框中,修改建议的⽂件名。
单击“浏览”以更改默认⽂件位置(“我的数据源”)。
5. (可选)分别在“说明”、“友好名称”和“搜索关键字”框中键⼊对⽂件的说明、友好名称及常⽤搜索⽂字。
6. 要确保更新数据时始终使⽤该连接⽂件,请单击“始终尝试使⽤此⽂件来刷新此数据”复选框。
此选项可确保使⽤该连接⽂件的所有⼯作簿始终会使⽤对该连接⽂件的更新。
7. 若要指定在将⼯作簿发布到 Sharepoint Foundation 2010⽹站并在 Web浏览器中打开它时如何访问数据透视表的外部数据源,请单击“验证设置”,然后选择以下选项之⼀以登录到相应的数据源:8.9. 单击“确定”,然后单击“完成”以关闭“数据连接向导”。
10. 将显⽰“导⼊数据”对话框。
11. 在“请选择该数据在⼯作簿中的显⽰⽅式”下,执⾏下列操作之⼀:12.Windows⾝份验证选择此选项可使⽤当前⽤户的 Windows⽤户名和密码。
这是最安全的⽅法,但在许多⽤户连接到服务器的情况下,此⽅法会影响性能。
把Excel数据导入到数据库的方法把Excel数据导入到数据库的方法,步骤如下:Excel导入数据库步骤一:打开SQLServerManagementStudio,按图中的路径进入导入数据界面。
Excel导入数据库步骤二:导入的时候需要将EXCEL的文件准备好,不能打开。
点击下一步。
Excel导入数据库步骤三:数据源:选择“MicrosoftExcel”除了EXCEL类型的数据,SQL还支持很多其它数据源类型。
Excel导入数据库步骤四:选择需要导入的EXCEL文件。
点击浏览,找到导入的文件确定。
Excel导入数据库步骤五:再次确认文件路径没有问题,点击下一步。
Excel导入数据库步骤六:默认为是使用的WINODWS身份验证,改为使用SQL身份验证。
输入数据库密码,注意:数据库,这里看看是不是导入的数据库。
也可以在这里临时改变,选择其它数据库。
Excel导入数据库步骤七:选择导入数据EXCEL表内容范围,若有几个SHEET表,或一个SHEET表中有些数据我们不想导入,则可以编写查询指定的数据进行导入。
点击下一步。
Excel导入数据库步骤八:选择我们需要导入的SHEET表,比如我在这里将SHEET表名改为price,则导入后生面的SQL数据库表为price$。
点击进入下一步。
Excel导入数据库步骤九:点击进入下一步。
Excel导入数据库步骤十:在这里完整显示了我们的导入的信息,执行内容,再次确认无误后,点击完成,开始执行。
Excel导入数据库步骤十一:可以看到任务执行的过程和进度。
将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数据库。
1.选择数据库导入数据
2.第二步,在下图的三个选框中分别选择相对应的项目,数据源选择microsoft excel,Excel文件路径选择你要导入的数据表格,excle版本根据源数据表格的版本来选。
3,如下图,选择‘编写查询以制定要传输的数据’
4.如下图,查询的语句如下,其中`Sheet1$`表是你自己的电子表格的第一个子表,导入的内容要放在子表里面,我们这里选择前1982行导入到数据库,如下图:
5.如下,选择数据库中的目标表,这里的目标表是我之前已经创建好的一个空表,也可不创建,在导入数据的时候默认会创建一个和上面查询筛选子表同名的dbo.sheeet1表。
6.如下图,选择那些源表中的列要被导入,忽略代表不导入。
选择好了点确定,然后下一步,
7.下一步
8,导入成功。
SQL2008导出数据功能
1:选择源数据库点击右键,依次选择“任务”—“导出数据”
2:在弹出的数据库显示源数据库,点击“下一步”按钮
3:在弹出的界面选择目标数据库,点击“下一步”按钮
点击下方的“编辑映射”按钮,选择“删除目标表中的行”和勾选“启用标识插入”
备注:在选择“编写查询以制定要传输的数据”,在弹出的界面编写SQL语句,点击“下一步”按钮,在弹出的界面在目标栏里面需要导入目标数据库的表,在点击下方的“编辑映
射”按钮,选择“删除目标表中的行”和勾选“启用标识插入”
5:点击“下一步”按钮,点击“完成”按钮开始数据导入。
怎样把Excel文件资料导入SQL Server2008的数据库的表中1.Excel导入SQLserver的表中前,保证Excel的表中列的顺序和数据库表的列的顺序保持一致,如果该列没有值,可以为空白。
2.打开SQL企业管理器(Microsoft SQL Server Management Studio)建议用SA身边登陆,如果Windows NT用户具有同等权限也可以3.登陆服务后,展开数据库服务器,会在最底下找到“管理”选项,单击右键,选择“导入数据(I)”选项4.单击数据导入选项后,会出现导入向导画面,直接单击“下一步”5.选择数据如下图1)在选择数据源时,请选择Microsoft Excel,因为我们的主题就是Excel导入SQL server 2)浏览要导入的Excel文件路径3)选择您要导入的Excel版本4)单击“下一步”4)数据源类型的选择列表5).Excel版本选择列表6.选择导入的目标1).选择导入的目标服务器的名称,没有显示可以手工输入的2).身份验证,建议使用用户:sa密码:**********3).选择要导入数据的数据库(Database)4).单击“下一步”7.指定表复制查询,因为本文讲述的是Excel的导入不要写SQL查询,默认选择即可,单击“下一步”8.选择源表和源视图1)本文讲述的是从Excel导入,请选择对应的源表Sheet1$2)选择目标源,请选择您要导入的数据表的名称3)如果有需要预览源数据,请单击右下边的“预览(P)”4).数据源的预览效果,如果发现数据源与表的结构不一致时,请及时调整Excel的格式。
9.查看数据类型映射这一步基本是系统显示目标源的数据结构和类型其次选择出错的处理方案,失败,忽略单击“下一步”10.保持并运行,是否要立刻运行。
11.完成向导,执行操作并保存数据12.执行操作的结果报告13.数据库中执行查询操作的显示结果,检查导入的数据是否正确,如有问题及时调整。
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条数据,包括列名标题。
从SQL Server中导入/导出Excel 的基本方法/*=================== 导入/导出Excel 的基本方法===================*/从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:/*===================================================================*/--如果接受数据导入的表已经存在insert into 表select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:test.xls',sheet1$)--如果导入数据并生成表select * into 表fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:test.xls',sheet1$)/*===================================================================*/--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=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文件的工作表名,一般要加上$才能正常使用.--*/--上面已经说过,用BCP导出的是类Excel文件,其实质为文本文件,--要导出真正的Excel文件.就用下面的方法/*--数据导出EXCEL导出表中的数据到Excel,包含字段名,文件为真正的Excel文件,如果文件不存在,将自动创建文件,如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10--*//*--调用示例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'IsProcedure') = 1)drop procedure [dbo].[p_exporttb]GOcreate 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='''';READONLY=FALSE' +';CREATE_DB=" +';DATABASE='+@sql+'"'--连接数据库exec @err=sp_oacreate 'adodb.connection',@obj outif @err<>0 goto lberrexec @err=sp_oamethod @obj,'open',null,@constrif @err<>0 goto lberr/*--如果覆盖已经存在的表,就加上下面的语句--创建之前先删除表/如果存在的话select @sql='drop table ['+@tbname+']'exec @err=sp_oamethod @obj,'execute',@out out,@sql--*/--创建表的SQLselect @sql='',@fdlist=''select @fdlist=@fdlist+',['++']',@sql=@sql+',['++'] '+case when in('char','nchar','varchar','nvarchar') then'text('+cast(case when a.length>255 then 255 else a.length end as varchar)+')'when in('tynyint','int','bigint','tinyint') then 'int'when in('smalldatetime','datetime') then 'datetime'when in('money','smallmoney') then 'money'else endFROM syscolumns a left join systypes b on a.xtype=b.xusertypewhere not in('image','text','uniqueidentifier','sql_variant','ntext','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 @err<>0 goto lberrexec @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)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--set @sql=’bcp "’+@tbname+’" out "c:\aa.txt" /S"(local)" /P"" /c’exec master..xp_cmdshell 'bcp "sk_xh.dbo.pensheng" out "c:\aa.xls" /S"kl-ps" /P"" / c'--导入ExcelSELECT * INTO pensheng FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=e:\dr.xls',[sheet1$])--ORSELECT * INTO pensheng FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=e:\dr.xls', [sheet1$])--ORSELECT * INTO pensheng FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=e:\dr.xls', 'SELECT * FROM [sheet1$]')/*动态文件名declare @fn varchar(20),@s varchar(1000)set @fn = 'c:\test.xls'set @s ='''Microsoft.Jet.OLEDB.4.0'',''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'exec(@s)*/SELECT cast(cast(科目编号as numeric(10,2)) as nvarchar(255))+'' 转换后的别名FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')... xactions/********************** EXCEL导到远程SQLinsert OPENDATASOURCE('SQLOLEDB','Data Source=远程ip;User ID=sa;Password=密码').库名.dbo.表名(列名1,列名2)SELECT 列名1,列名2FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')... xactions/** 导入文本文件EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -U sa -Ppassword'/** 导出文本文件EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'或EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT. txt -c -Sservername -Usa -Ppassword'导出到TXT文本,用逗号分开exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password'BULK INSERT 库名..表名FROM 'c:\test.txt'WITH (FIELDTERMINATOR = ';',ROWTERMINATOR = '\n')--/* dBase IV文件select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料4.dbf]')--*/--/* dBase III文件select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料3.dbf]')--*/--/* FoxPro 数据库select * from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\','select * from [aa.DBF]')--*//**************导入DBF文件****************/select * from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceDB=e:\VFP98\data;SourceType=DBF','select * from customer where country != "USA" order by country')go/***************** 导出到DBF ***************/如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句insert into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\','select * from [aa.DBF]')select * from 表说明:SourceDB=c:\ 指定foxpro表所在的文件夹aa.DBF 指定foxpro表的文件名./*************导出到Access********************/insert into openrowset('Microsoft.Jet.OLEDB.4.0','x:\A.mdb';'admin';'',A表) select * from 数据库名..B表/*************导入Access********************/insert into B表selet * from openrowset('Microsoft.Jet.OLEDB.4.0','x:\A.mdb';'admin';'',A表)文件名为参数declare @fname varchar(20)set @fname = 'd:\test.mdb'exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'','''+@fname+''';''admin'';'''', topics) as a ')SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="f:\northwind.mdb";Jet OLEDB:Database Password=123;User ID=Admin;P assword=;')...产品********************* 导入xml文件DECLARE @idoc intDECLARE @doc varchar(1000)--sample XML documentSET @doc ='<root><Customer cid= "C1" name="Janine" city="Issaquah"><Order oid="O1" date="1/20/1996" amount="3.5" /><Order oid="O2" date="4/30/1997" amount="13.4">Customer was very sati sfied</Order></Customer><Customer cid="C2" name="Ursula" city="Oelde" ><Order oid="O3" date="7/14/1999" amount="100" note="Wrap it bluewhite red"><Urgency>Important</Urgency>Happy Customer.</Order><Order oid="O4" date="1/20/1996" amount="10000"/></Customer></root>'-- Create an internal representation of the XML document.EXEC sp_xml_preparedocument @idoc OUTPUT, @doc-- Execute a SELECT statement using OPENXML rowset provider.SELECT *FROM OPENXML (@idoc, '/root/Customer/Order', 1)WITH (oid char(5),amount float,comment ntext 'text()')EXEC sp_xml_removedocument @idocTop5 楼pensheng(云飞)回复于2005-08-28 13:45:17 得分0/**********************Excel导到Txt****************************************/想用select * into opendatasource(...) from opendatasource(...)实现将一个Excel文件内容导入到一个文本文件假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)且银行帐号导出到文本文件后分两部分,前8位和后8位分开。
第1章Excel 与SQL Server 的交互本章主要介绍利用Excel 的数据导入/导出向导工具查询获取SQL Server 数据库数据,以及使用SQL Server 应用程序的导入/导出向导工具将工作表数据保存到SQL Server 数据库。
关于如何利用Excel VBA 来操作和控制SQL Server 数据库,将从第2章开始进行介绍。
1.1 将SQL Server 数据库数据导入到Excel 工作表可以通过新建数据库查询法将SQL Server 数据导入到Excel 工作表,也就是通过建立一个数据库查询,并通过执行这个查询,从而得到需要的数据。
下面介绍具体步骤。
(1)在Excel 工作簿中,单击【数据】→【导入外部数据】→【新建数据库查询】,打开【选择数据源】对话框,如图1-1所示。
图1-1 【选择数据源】对话框(2)在【选择数据源】对话框中,选择“数据库”选项卡列表中的“<新数据源>”,单击【确定】按钮,打开【创建新数据源】对话框,如图1-2所示。
(3)在【创建新数据源】对话框中,在第1项“请输入数据源名称”文本框中输入要创建的数据源名称(例如输入“我的数据”),然后在出现的第2项“为您要访问的数据库类型选定一个驱动程序”下拉列表框中选择“SQL Server ”,如图1-3所示。
(4)单击【连接】按钮,打开【SQL Server 登录】对话框,如图1-4所示。
图1-2 【创建新数据源】对话框图1-3输入数据源名称,并选择驱动程序(5)首先在“服务器”列表框中选择或输入SQL Server 服务器名称。
如果该服务器有登录ID和密码,则取消“使用信任连接”复选框,然后分别在“登录ID ”文本框和“密码”文本框中输入用户名和密码。
单击【选项】按钮,展开对话框的“选项”部分,在“数据库”下拉列表框中选择要导出数据的数据库(例如选择SQL Server 默认安装的示例数据库“Northwind ”),在“语言”下拉列表框中选择“Simplified Chinese ”,其他保持不变,如图1-5所示。
实验环境:WIN XP,MS Office Excel2007,Sql Server2008
准备数据:Excel文档:D:\test\重复出修率.xlsx
方法一:
第一步:打开SSMS:
【开始】→【所有程序】→【Microsoft Sql Server2008】→【Sql Server Management Studio】
第二步:连接数据库:
在’对象资源管理器’中点击【连接】→【数据库引擎】登陆服务器
(P.S:如果没有看到’对象资源管理器’,点击左上角的【视图】→【对象管理器】)
第三步:登陆成功后,右击你要导入数据的数据库名,我这里数据库名是’TEST’
右击【TEST】→【任务】→【导入数据】
这时候会出现一个向导:点击【下一步】
在弹出的窗口中,【数据源】选择:Microsoft Excel;
【Excel文件路径】就选择你本地电脑存放Excel文档的路径,我这里是D:\test\重复出修率.xlsx 【Excel版本】选择Excel2007(可以根据你office的版本,选择其他如Excel2003等等。
)选中【首行包含列名称】框,最后点击【下一步】
“首行包含列名称”是指Excel中的首行数据插入数据库后将作为新建表的列名.
在弹出窗口中,【目标】可以采取默认的,【服务器名称】也是一样可以选择身份验证,最后选择你要插入数据到哪个数据库中。
如我这里选的是’TEST’,选好后点击【下一步】
如果就把Excel数据插入一个新表,就选择【复制一个或多个表或视图的数据】
如果想把Excel数据插入到已存在的一张表中,则选择下面的【编写查询以指定要传输的数据】
我这里是选择上面一个,然后点击【下一步】
接着会弹出Excel表中的sheet表名字,如果你没有修改过sheet表名字,则可能显示的是’shee1$’,’shee2$’,’shee3$’等等.
然后你选中你想要导入的哪张表的数据,我这里导入的是【’aug$’】
选中后,右边的【目标】栏位中会出现内容,
dbo是指数据库的架构名,aug$只是新建的表名,如果你想修改表明,双击就可以表明进入编辑状态就可以修改了。
我这里修改的表名称为:aug_info
修改后你也可以点击【编辑映射】
你可以在这里修改【目标】,【类型】,是否可以为NULL,【大小】等建表数据。
修改好后,点击【确定】,如果不想修改就点击【取消】
返回上个窗口后,你也可以点击【预览】
预览里面是Excel表中的一些数据。
点击【确定】,然后点击【下一步】
在弹出的页面中,就选中【立即运行】,至于【保存SSIS包】我也不是很清楚干嘛的。
看样子好像是加密来着。
然后点击【下一步】
这个窗口就是一些提示信息,点击【完成】
这个窗口是导入数据提示信息,看来我导入数据成功了。
新建表名为aug_info,插入数据336行,所在数据库为TEST.
点击【关闭】按钮就可以了。
然后就是到SSMS中查看是否新生成了aug_info这张表.
刷新【TEST】数据库或者重新登录SSMS
在【TEST】数据库下,查看【表】,发现有个表名是aug_info
进一步确认下,数据是否有误.
点击【对象资源管理器】上面的【新建查询】,
输入:
use TEST
select COUNT(*)as有多少行数据from aug_info
select*from aug_info
前面显示‘已复制336行’,现在查询到表中有336行数据。
看来这个表就是刚刚从Excel 中导入的数据。
OK,大功告成。
很简单吧,点点鼠标就可以了!
P.S:
前面到这里的时候,选择了上面的【复制一个或多个表或视图的数据】
那下面的【编写查询以指定要传输的数据】怎么用呢?
下面我们来试一下,重新导入Excel,到这一步选择下面按钮,然后点击【下一步】
发现这个是用来写SQL代码的。
这个该怎么用呢?我也没用过,百度了下。
这个主要针对从数据库中导出条件筛选的数据.比如有一张test表,我只想导出表的其中一个字段或者几个字段的数据.就可以用这个.
select id,name from test where条件
--首先打开SSMS,然后点击左上角的【新建查询(N)】,在右边弹出的窗口中输入一下代码:代码一:
----------------------------------------------------------------------------------------
use TEST---‘TEST’是数据库名字,你可以切换到你想要的数据库或直接输入数据库名字
----根据系统需要使用这几段批处理命令打开相应功能
EXEC sp_configure'show advanced options',1;
GO
RECONFIGURE;
GO
EXEC sp_configure'Ad Hoc Distributed Queries',1;
GO
RECONFIGURE;
GO
----以上为根据实际情况的可选命令
----开始插入数据到TEST数据库的一个新表中
select*into newtable_name from
OpenDataSource('Microsoft.Ace.OLEDB.12.0','Data Source="c:\daoru.xlsx";Extended properties="Excel12.0;HDR=Yes"')...[sheet1$]
go
P.S:
1:执行这段代码之前,你需要准备导入的数据。
我用的是Excel2007,Excel文件的名字为“daoru”,放在C盘目录下。
2:代码中的select*into newtable_name from...这是把excel中的数据插入到TEST数据库中,并同时新建表名为newtable_name存放插入的数据.
3:代码中的Office2007的数据库驱动为“Microsoft.Ace.OLEDB.12.0”,
如果是Office2003的话应改成“Microsoft.Jet.OLEDB.4.0”,
还有Office2007中Excel的“Extended properties”中为“Excel12.0”而Office2003为“Excel8.0”
4:代码中'Data Source="c:\daoru.xlsx"就是要导入数据的文件存放路径.(注意后缀:Excel 2007的为.xlsx;Excel2003的为.xls)
5:代码中的...[sheet1$]为表名,格式为:[XXX$]或者XXX$,不需要中括号也行,而且表名不能以数字开头(其实这是几乎所有编程语言的变量命名规则),切记!没有修改过名字的话,Excel默认是shee1,shee2,shee3....
6:当然,你也可以使导入的数据,不用新建表.而是直接导入到数据库已有的表中,只要稍微修改代码就可以了.
---------------------------------------------------------------------------------------
insert into已存在的表名(字段一,字段二)select A,B from
OpenDataSource('Microsoft.Ace.OLEDB.12.0','Data Source="c:\daoru.xlsx";Extended properties="Excel12.0;HDR=Yes"')...[sheet1$]
go
---------------------------------------------------------------------------------------
代码二中,A,B表示的意思是Excel中的A列和B列,但是直接输入A,B是没有用的.
这里还要提醒一点,导入数据的时候,系统默认Excel的第一行数据是字段名.
所以,你可以把Excel的第一行的前两列数据改为A和B,这样就可以了!
如果Excel中的列数和数据库中的已存在的表的列数相等,也可以改成如下:
代码三:
---------------------------------------------------------------------------------------
insert into已存在的表名select*from
OpenDataSource('Microsoft.Ace.OLEDB.12.0','Data Source="c:\daoru.xlsx";Extended properties="Excel12.0;HDR=Yes"')...[sheet1$]
go
---------------------------------------------------------------------------------------。