图解把Excel数据导入到SQL Server 2008

合集下载

ExcelVBA导入Excel中数据到SQLServer中

ExcelVBA导入Excel中数据到SQLServer中

[方法一]如何把EXC‎EL中的数据‎导入SQL SERVER‎数据库中(2010-12-30 17:16:53)有时候需要把‎E XCEL中‎的数据导入到‎数据库中。

一条一条的在‎数据库中建数‎据显然不可取‎,如何找一条快‎捷的途径进行‎转换是很有必‎要的。

在这里主要是‎介绍一种在E‎X CEL中用‎V BA进行编‎程,把EXCEL‎的数据转换成‎S QL语句,存入到一个文‎件中,然后在数据库‎服务器上提交‎这些SQL语‎句来实现。

一、两边的数据格‎式(一)数据库的表结‎构生成数据库表‎的SQL语句‎如下:create‎table Addres‎s(ID Intege‎r identi‎t y(1,1) not null primar‎y key,Name varcha‎r(20) not null,Dept varcha‎r(50),Spell varcha‎r(20),Mobile‎ varcha‎r(11),Tel varcha‎r(20),EMail varcha‎r(30),VOIP varcha‎r(6),Remark‎ varcha‎r(200),);EXCEL中‎的数据格式(二)转换的VBA‎函数Sub Genera‎t eSQL()Dim i, k As LongDim s As String‎Open "d:\txl.sql" For Output‎As #1 '打开一个文件‎以供输入SQ‎L语句i = 2While Cells(i, 1) <> ""s = "INSERT‎INTO ADDRES‎S (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导入SQL数据库

EXCEL导入SQL数据库

二、配置数据库转换服务器端
对不同类型的数据库备份后,要选择相应的服务器端,才能运用ODBC对不同数据库之间进行访问。从被审计单位数据库ORACLE、FOXPRO、sybase、sl anywhere、DB2等采集到的备份数据库,要在本机上相应安装ORACLE、FOXPRO、sybase、sl anywhere、DB2服务器端,然后将备份数据库进行还原,再通过ODBC将还原后的数据库ORACLE、FOXPRO、sybase、sl anywhere、DB2数据导入ACCESS或者SL SERVER中。如从ORACLE数据库采集的备份数据(如拷贝了一个dmp数据库备份文件),就要在本机安装Oracle服务器端,使用Oracle服务器端的OEM将数据库备份还原,通过ODBC将ORACLE数据导入ACCESS或者SL SERVER中。
[驱动程序]选项--查看是否安装“Microsoft ODBC for Oracle”驱动程序;然后,添加ODBC数据源--切换到系统DSN--添加一个Oracle数据源--单击Add按纽--在列表框中选择“Microsoft ODBC for Oracle”选项--单击
[完成]按纽--出现“Microsoft ODBC for Oracle Setup”对话框--名称(数据源名称),自己输入必须记住,同时输入服务器名称,单击下一步OK按纽关闭对话框,即可在System DSN选项卡中看到添加的数据源名称。
四、还原采集的备份数据库
对采集的数据库备份文件要还原到本机数据库里,有利于选择所需的文件。如采集的是SL SERVER备份数据库文件,其还原的操作方法是:右键点击“数据库--新建数据库--名称(如XX行财) --点击“数据文件”菜单 --查看数据文件的位置(c:\program…\XX行财_data.mdf)--复制该路径--确定;点建立的“XX行财”--所有任务--还原数据库--(常规)点“从设备”--选择

SQL Server 2008数据库 怎么样导出Excel表格数据

SQL Server 2008数据库 怎么样导出Excel表格数据

SQL Server 2008数据库怎么样导出Excel表格数据方法一:查询完之后在结果栏里按CTRL+A将结果全选,按右键选择“将结果另存为...”,然后保存为“*.csv”文件,就可以用excel打开了。

或者“连同标题一起复制”,然后将结果拷贝到excel表中就可以了。

方法二:登录到数据库SQL Server 2008 中,图片中的‘.’表示local的意思。

1. 2在需要操作的数据库上右键之后选择任务再之后导出数据功能,例子中以DB_Test数据库做演示。

2. 3进入SQL Server 2008的数据导入与导出向导,之后点击下一步(next)。

3. 4选择服务器名称为local,例子中是'.',数据库为DB_Test。

实际中以真实数据库为主,以上只是演示实例,之后点击下一步。

4. 5选择导出的目标为Excel,数据库为默认值即可,选择Excel的文件路径之后点击下一步按钮继续操作。

5. 6下一个页面采用默认设置,之后点击下一步按钮。

选择数据库中即将要导出数据的具体表,可以通过预览按钮查看数据,之后点击下一步按钮。

6.7之后点击下一步,再之后选择立即运行按钮与下一步。

再点击完成按钮,最后点击关闭按钮即可。

7.8最后,打开我们的Excel表格文件,验证数据,可以看到图片中已经有数据了,这样SQL Server 2008已经正确导出数据来了。

END经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

SQL Server与Excel中数据的导入导出基本方法

SQL Server与Excel中数据的导入导出基本方法

从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。

excel导入SQL2008报错解决

excel导入SQL2008报错解决

1、当把EXCEL里面的数据插入SQL2008数据库中已经创建好的空表的时候,会提示如下图中的错误提示,是因为导入数据的时候行数没有控制(关于如何控制导入数据的行数,详细请见/view/170a1e37a45177232f60a27a.html),导入的行数大于源EXCEL表里面实际数据的行数,把EXCEL里面的空行导入的时候反映在SQL2008中表中是null值,但是如果SQL表中列不允许为空就会导致下面错误,解决办法当然就是修改SQL 表中的列,让它允许为空,然后再重新导入,或者按照EXCEL里面的实际数据的行数控制导入的行数。

例如,我把t_yibao_customer 表的checkdate列设置为空,语句后面不加not null默认就是允许为空alter table t_yibao_customeralter column checkdate datetime(这里不带not null就是默认允许为空)上面的代码是修改列允许为空2、如下图,红圈处,当SQL表里面的列允许为空的时候就会自动打‘√’,这样就不会因为导入了空行而出错。

比如一个EXCEL2003的表里面有10行数据,其他的行都是空,而SQL里面有一个空表,接受EXCEL的数据导入,导入这个EXCEL表到SQL2008表的时候如果只导入10行,就不会因为SQL表的列不允许为空而报错,如果没控制导入的行数,那么就要修改SQL里面的表列允许为空,其实,如果报错了还是会成功导入数据,至少我是这样的,导入之后可以用SELECT语句查询看一下,报错的话只是导入可以导入的行,不导入空行,如果SQL里面的表列允许为空,那么EXCEL里面的空行就会以null值导入SQL里面的表,当然,对于一个大的EXCEL表来说,如果能选择EXCEL导入SQL的行数,有选择的导入总是好的,关于如何控制导入数据的行数,详细请见/view/170a1e37a45177232f60a27a.html。

如何将数据从 Excel 导入到 SQL Server

如何将数据从 Excel 导入到 SQL Server

本文循序渐进地演示如何用不同的方法将数据从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数据与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数据库的两种方法

把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数据库连接 %>。

Excel与SQLServer数据交互

Excel与SQLServer数据交互

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数据导入到数据库的方法把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文件数据导入到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数据库。

Excel表格里的数据导入SQLSERVER数据库

Excel表格里的数据导入SQLSERVER数据库

使用第三方工具
总结词
除了SQL Server自带的功能外,还有许多第三方工具可以帮助用户将Excel数据导入SQL Server。
详细描述
这些第三方工具通常提供了更多的功能和灵活性,例如支持更多的文件格式、自动映射列、数据清洗和转换等。 用户可以根据自己的需求选择合适的工具,如DataGrip、Tableau、Power BI等。
逻辑检查
检查数据是否符合业务逻 辑,如年龄字段是否合理。
参照完整性
检查外键引用是否有效, 关联的数据是否一致。
数据性能优化
索引优化
根据查询需求,为常用查询字段 建立合适的索引。
查询优化
优化导入后的查询语句,提高查询 效率。
数据分区
根据数据的特点和使用频率,对表 进行分区管理。
THANKS
感谢观看
02
Excel数据导入SQL Server的方法
使用SQL Server Integration Services (SSIS)
总结词
SSIS是SQL Server提供的一个强大的ETL工具,可以用来导入、导出和转换数据 。
详细描述
通过SSIS,用户可以创建一个数据流任务,将Excel文件作为源数据,然后将其导入 到SQL Server数据库中。在SSIS中,用户可以定义数据清洗、转换和加载的规则, 确保数据准确无误地导入到目标表中。
通过导入Excel数据到SQL Server, 可以自动化地完成数据清洗、转换 和加载等任务,减少手动操作的时 间和人力成本。
批量处理
导入大量数据时,使用SQL Server的批量导入功能可以显著 提高数据处理的效率,减少等待 时间。
保证数据一致性
数据格式统一

怎样把EXCEL文件资料导入SQL SERVER2008的数据库的表中

怎样把EXCEL文件资料导入SQL SERVER2008的数据库的表中

怎样把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表导入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条数据,包括列名标题。

SQL Server与Excel数据互导解答

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 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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验环境: 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$只是新建的表名,如果你想修改表明,双击就可以表明进入编辑状态就可以修改了。

我这里修改的表名称为: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="Excel 12.0;HDR=Yes"')...[sheet1$]
go
P.S:
1:执行这段代码之前,你需要准备导入的数据。

我用的是Excel 2007,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”中为“Excel 12.0”而Office2003为“Excel 8.0”
4: 代码中'Data Source="c:\daoru.xlsx" 就是要导入数据的文件存放路径. (注意后缀:Excel 2007的为.xlsx;Excel 2003的为.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="Excel 12.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="Excel 12.0;HDR=Yes"')...[sheet1$]
go
---------------------------------------------------------------------------------------。

相关文档
最新文档