SQL Server2005与Excel之间的导入与导出
SQLServer读取及导入Excel数据

SQLServer读取及导⼊Excel数据⼀、引⾔使⽤SQL Server的OPENROWSET及OPENDATASOURCE函数,可以像查询数据表⼀样来读取Excel数据。
但是,要想让这两个函数能正常运⾏,可不是那么容易,假如没理解或没配置好的话,⼀路的报错会让你怀疑⼈⽣。
⼆、配置2.1、组件安装要想使⽤OPENROWSET及OPENDATASOURCE函数来读取Excel数据,⾸先要在⽬标的SQL Server主机上安装AccessDatabaseEngine组件。
1)换句话说:假如要操作的数据库是在本地的,那我在本地安装AccessDatabaseEngine即可;假如要操作的数据库安装在远程的服务器上,那么需在远程的服务器上安装AccessDatabaseEngine。
2)需要说明的是,读取Excel数据,只需安装AccessDatabaseEngine,并不⼀定要安装Office。
3)依⽬标的SQL Server主机的操作系统位数,来对应安装AccessDatabaseEngine版本。
本处Excel是2013版本(.xlsx),需安装Microsoft Access Database Engine 2010 Redistributable。
2.2、服务配置在⽬标的SQL Server主机上,Win+R调出运⾏,输⼊services.msc调出服务。
将SQL Server (MSSQLSERVER)、SQL Full-text Filter Daemon Launcher (MSSQLSERVER)两个服务的登录⾝份,改为本地系统账户。
2.3、参数配置在⽬标的SQL Server上打开查询分析器,执⾏以下语句:--1、开启导⼊功能(查看参数:exec sp_configure)exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1reconfigure--2、允许在进程中使⽤ACE.OLEDB.12.0exec master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1--3、允许动态参数exec master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 12.3.1、开启导⼊功能对应的系统界⾯:2.3.2、允许在进程中使⽤ACE.OLEDB.12.0及允许动态参数对应的系统界⾯:三、测试3.1、测试语句在⽬标的SQL Server上打开查询分析器,执⾏以下语句:--1、使⽤查询分析器查询EXCEL--注意1:若连接的是本机的数据库,E:\EDI\年度返利费⽤表.xlsx指的是本机的⽂件路径。
SQL2005数据库导入导出办法

精简版SQL Server 2005 数据库导出、导入办法
1、数据库导出(备份)
选中要备份(导出)数据库—>右击,选择“任务”(即Tasks)—>选择“备份”(即Back up)—>选择“普通”(即General),然后按下图选择操作
然后选择“选项”(即Options),按照下图选择操作,最后选择“确定”(即ok)即可将数据库备份。
2、数据库导入(还原)
首先,将要导入或还原的“.bak”文件放到c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup目录下。
其次,打开SQL Server ,选中要还原的数据库(即要将备份数据库导入的目标数据库)—>右击,选择“任务”(即Tasks)—>选择“还原数据库”(即Restore—>database)—>选择“普通”(即General),然后选择“从设备”(即From device),点击右侧选择目标框,会弹出一个窗口如下图所示
选择添加,会出现如下窗口
从中选择要还原的数据库备份,然后“确定”。
在添加页面选择“确定”。
就会回到“普通”页面,选中相应数据库,如下图:
然后选择“选项”(即Options)操作,按下图操作:
最后选择“确定”(或ok)即可。
Microsoft Sql Server2005导入导出语句大全

SQL语句导入导出大全/*******导出到excelEXEC master..xp_cmdshell'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c-q-S"GNETDATA/GNETDATA"-U"sa"-P""'/***********导入ExcelSELECT*FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel5.0')...xactions/*动态文档名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=Excel5.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=Excel5.0')...xactions/**********************EXCEL导到远程SQL 中国网管博客insert 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=Excel5.0')...xactions/**导入文本文档EXEC master..xp_cmdshell'bcp dbname..tablename in c:\DT.txt-c-Sservername-Usa-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语句bitsCN_cominsert 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;Password=;')...产品www_bitscn_com*********************导入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 satisfied</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@idoc/**********************Excel导到Txt****************************************/想用select*into opendatasource(...)from opendatasource(...)实现将一个Excel文档内容导入到一个文本文档假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)且银行帐号导出到文本文档后分两部分,前8位和后8位分开。
SQL_Server_2005数据导入导出(SQLServer2005数据库维护基础与进阶)

图11-24 选择目标对话框
图11-25 选择文件对话框
2. 导出数据库至文本文件
(4)单击“下一步”按钮,就会出现指定表复制或查询对话框。其中可以选定将源数据库中的表格 或视图复制到文本文件,还是将满足查询结果的记录复制到文本文件。 (5)单击“下一步”按钮,则出现“配置平面文件目标”对话框,如图11-26所示。如图11-27所示 在该对话框中单击“编辑转换”按钮,则出现列映射对话框.
图11-5 选择源表和视图对话框
图11-6 列映射对话框
1.导入Access数据库 (5)在图11-5中单击“ 下一步”按钮,则会出 现“保存并执行包”对 话框,如图11-7所示。 在该对话框中,可以指 定是否希望保存SSIS包 ,也可以立即执行导入 数据操作。
图11-7 “保存并执行包”对话框
1.导入Access数据库 (6)单击“下一步”按钮,则出现“包保护级别”对话框,如图11-8所示。点击“ 确定”按钮可完成包保护导级别设定,并打开“保存SSIS包”页框,如图所示。
图11-11 选择文本数据源对话框
2. 导入文本文件
(3)单击“下一步”按钮,就会出现选择目的数据库类型对话框,如图 11-12所示。这里选择为SQL Server,选定服务器名称和数据库名称后, 单击“下一步”按钮,则出现选择源表和视图对话框,如图所示。
图11-12 选择目的数据库对话框
图11-13 选择源表和视图对话框
图11-1 打开导入向导
图11-2 选择数据源对话框
数据的导入
1.导入Access数据库
(3)单击“下一步”按钮,则出现选择导入的目标数据库类型对话框,如图11-3所示。本 例使用SQL Server数据库作为目标数据库,在目标对话框中选择SQL Native Client,在服 务器名称框中输入目标数据库所在的服务器名称。下方需要设定连接服务器的安全模式以 及目标数据库的名称。设定完成后,单击“下一步”按钮,则出现指定表复制或者查询对 话框,如图11-4所示。
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。
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳
![[SQL]将Excel表数据导入SQL Server2005的几种方法归纳](https://img.taocdn.com/s3/m/ea168142be1e650e52ea9912.png)
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL Server2005中,供存储过程计算。
由于之前没有将Excel数据导入SQL Server2005的经验,因此摸索着花了一天时间才搞定。
下面将网上收集到的几种导入方法做个归纳。
方法一、利用SQL Server2005自带的DTS工具,手工导入:第一步是点击开始并选择运行并输入CMD然后在命令提示符里输入DTSWIZARD。
SQL Server 导入和导出向导的欢迎界面将显示出来,如下图所示:(也可以这样打开该界面:1、登录到 SQL Server Management Studio。
2、在“对象资源管理器”中右键单击“管理”,在弹出列表中单击“导入数据”。
)当你点击下一步按钮时,它将进入选择数据源向导界面。
用户应该选择数据源为Microsoft Office 12.0 Access Database Engine OLE DB Provider 然后在向导界面中点击属性…按钮,它将弹出数据链接属性界面。
在所有标签页中,双击数据源属性值并输入电子数据表的位置,例如“C:\Excel2007\Import\SampleData.xlsx”作为导入数据的数据源的Microsoft Office Excel 2007文件名称和路径。
然后双击扩展属性并选择Excel 12.0作为属性值。
到Microsoft Office Excel 2007的连接可以通过点击测试连接按钮来进行测试,如下图所示:在下一个页面中,数据源需要选为SQL Native Client,因为数据将导入到SQL Server 2005。
然后你需要选择数据所要导入的服务器名称,并需要配置合适的验证模式,它之后跟着数据库名称。
在这个例子中,我们将使用windows验证连接到本地SQL Server实例,所使用的数据库将是ImportExcel。
C#对SQLServer中的数据导入导出

[0].ToString(); com.Parameters ["@ 姓 名"].Value = dt.Rows[i]
[1].ToString(); com.Parameters ["@ 性 别"].Value = dt.Rows[i]
2009. 17 43
this.dgvStudent.ReadOnly = true; tsbSave.Enabled = false;
} /* 自Βιβλιοθήκη 义方法,导入 Excel 中的数据到数据集中 */
public DataSet ExcelToDS(string Path) {
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source = " + Path + ";" + "Extended Properties =Excel 8.0;";
Rows[i][8].ToString(); if (conn.State == ConnectionState.Closed) { conn.Open(); } com.ExecuteNonQuery(); conn.Close();
} MessageBox.Show("已成功将 EXCEL 数据导 入 到 数据库中! "); dgvStudent.DataSource = null; dgvStudent.ReadOnly = true; } catch (Exception ex) { MessageBox.Show (" 保 存 数 据 有 误 ! " + ex. Message.ToString()); } } private void tsbExit_Click(object sender, EventArgs e) { this.Close(); } 在导入学生 信 息 窗 体 中 , 导 入 Excel 数 据 到 数 据 集 的 代 码 放 在 了 一 个 自 定 义 方 法 ExcelToDS () 中 。 在 “ 导 入 Excel 文 件” 按钮的 Click 事 件 方 法 中 , 调 用 ExcelToDS () 方 法 , 得 到 数据集对象, 再将数据集对象的内容显示到表格控件 dgvStudent 中。
sqlserve 快速导出excel方法

SQL Server 是一种强大的关系型数据库管理系统,它可以帮助用户存储和管理大量结构化数据。
在实际工作中,我们经常需要将数据库中的数据导出到 Excel 表格中进行分析和处理。
本文将介绍 SQL Server 快速导出 Excel 的方法,希望对大家有所帮助。
1. 使用 SQL Server Management Studio 导出数据我们可以使用 SQL Server Management Studio(SSMS)自带的功能来快速导出数据到 Excel。
具体操作步骤如下:打开 SQL Server Management Studio,并连接到相应的数据库实例。
在 Object Explorer 中找到需要导出数据的数据库,展开该数据库,找到要导出数据的表。
右键点击该表,选择 "Tasks" -> "Export Data"。
在 "Wee to the SQL Server Import and Export Wizard" 窗口中,点击 "Next"。
在 "Choose a Data Source" 窗口中,选择数据源的类型,一般选择"SQL Server Native Client",然后选择要导出数据的数据库实例,输入数据库登入信息,点击 "Next"。
在 "Choose a Destination" 窗口中,选择目标数据源的类型为"Microsoft Excel",然后输入 Excel 文件的路径和名称,点击 "Next"。
在 "Specify Table Copy or Query" 窗口中,选择 "Copy data from one or more tables or views",然后选择要导出的表,点击 "Next"。
SQL2005 数据的导出 bcp 命令

bcp命令是SQL2005 一个实用的数据导出导入工具,我们可以运用这个命令方便的到处导入数据
首先我们欣赏一下bcp命令的格式:
就打开了
然后我们执行这个命令就ok了
EXEC master..xp_cmdshell 'bcp "select * from buyV4_TEST..tb_bill_i " quer yout e:\12666.xls -c -S"XXXX" -U"XXXX" -P"XXXX"'
执行这个是用到的存储过程这个是命令数据查询语句导出命令导出路径和文件转为字符char 数据库所在服务器名称XXXX换为数据库账号XXXX换为密码
友情提醒:
1、如果遇到bcp主数据文件无法打开是因为你所要导出的数据的所在盘没有权限这样你需要把这个盘符的everyone赋予他修改权限就可以了
导出的文件是在数据库安装的机器上得哦
2、SQL2000 执行语句是可能会报语法不对提示你格式是什么一堆的你把命令放到一行语法对的情况下应该对的。
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文件数据导入到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 2005 中表的导入导出

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"密码"'
--方法三:
select * into 要生成的SQL表名 from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\','select * from dbf表名.DBF')
--如果接受导入数据的SQL表不存在,导入时创建
--方法一:
select * into 要生成的SQL表名 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=c:\','select * from dbf表名.dbf')
--如果接受数据导入的表已经存在
insert into 表 select * from
sql2005数据导入导出

一、Microsoft SQL Server 2005 数据导入导出,在网络上查找了很多资料,但基本上没有几个可以直接很直观的讲解。
费了很大的劲才将SQL Server 2005的数据导入导出弄明白。
1、首先说下,现在的生活中需要用到SQL Server 2005数据库的地方实在太多,工作中经常碰到;特别是一些网络管理员好,或者是计算机爱好者等等。
这里还是以网站数据导入为例2、其次是,SQL Server 2005的可操作性是非常强的;相对Access数据库而言SQL Server 2005具有更好的安全性、稳定性、可操作性… Access数据库是入门级的数据库,在小型数据库中具有很好的表现;但是安全性、稳定性方面,当数据库文件不断增长Access就显得有点吃力了。
所以在各类企业、公司在采用数据库时,很大程度上选择了SQL。
3、SQL的优点不用多说,但在初学者身上尤其上初次使用者很难对SQL做个很好的“诠释”。
Access在网站中的可移动性是十分强的;而在SQL中网站的可移动性,就变得不是那么洒脱。
例如:网站迁移Access网站可以直接将网站做整体备份,不需要单独对Access做任何处理,也不需要安装Access照样可以正常运行。
在这方面SQL就显得有点力不从心;这时你必须对SQL Server 2005 做数据备份或者直接导出数据,当然也支持远程数据导出导入。
下面就说说如何对SQL Server 2005做数据导入导出处理(这里以导入为例)选中“数据库”-“任务”-“导入数据(I)”;导出数据则在这里选择“导出数据(X)”这一步选择好被导出的数据库文件,远程数据导出则在这里填好SQL数据库服务器的远程地址、用户名和密码,再选择指定导出的数据库这一步是被导入数据库,指目标数据库,或者说导出到的某个目标数据库;同样需要输入导入数据库的用户名和密码。
解决Sql Server 2005导入Excel错误消息

解决Sql Server 2005导入Excel错误消息* 错误0xc020901c: 数据流任务: 输出“Excel 源输出”(9) 上的输出列“经营范围”(24) 出错。
返回的列状态是:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。
”。
(SQL Server 导入和导出向导)* 错误0xc020902a: 数据流任务: “输出列“经营范围”(24)”由于发生截断而失败,而且针对“输出列“经营范围”(24)”的截断行处理设置指定截断时出错。
在指定组件的指定对象上出现截断错误。
(SQL Server 导入和导出向导)* 错误0xc0047038: 数据流任务: SSIS 错误代码DTS_E_PRIMEOUTPUTFAILED。
组件“源- 全部$”(1) 的PrimeOutput 方法返回了错误代码0xC020902A。
管道引擎调用PrimeOutput() 时该组件返回了一个失败代码。
虽然该失败代码只与该组件有关,但这个错误是致命的,管道已停止执行。
可能在此之前已经发出错误消息,提供了有关失败的详细信息。
(SQL Server 导入和导出向导)* 错误0xc0047021: 数据流任务: SSIS 错误代码DTS_E_THREADFAILED。
线程“SourceThread0”已退出,错误代码为0xC0047038。
可能在此之前已经发出错误消息,提供了有关线程退出原因的详细信息。
(SQL Server 导入和导出向导)* 错误0xc0047039: 数据流任务: SSIS 错误代码DTS_E_THREADCANCELLED。
线程“WorkThread0”接收到关闭信号,正在终止。
原因是用户请求了关闭,或另一线程中的错误导致该管道关闭。
可能在此之前已经发出错误消息,提供了有关取消线程的原因的详细信息。
(SQL Server 导入和导出向导)1.用SQL Server 导入和导出向导工具时会碰到上面的问题,不是字段设置的不够长的原因,后来改用Sql语句执行:SELECT * INTO 全部$ FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=E:\沈阳实施\医疗器械经营企业名单(全部-完整版).xls;Extended Properties=Excel 8.0')...[全部$]接着又碰到两个问题:1.SQL Server 阻止了对组件'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
数字图书馆实现Excel与SQL SERVER 2005数据交互

数字图书馆实现Excel与SQL SERVER 2005数据交互作者:胡锴来源:《中小企业管理与科技·中旬刊》2014年第10期摘要:随着图书馆网络资源增多,如何通过编程的方法实现Excel数据导入到SQL Server,是一个值得探讨的问题。
本文主要以Excel的COM组件为中心,介绍编程中实现Excel与SQL Server数据的交互,并且给出其中的详细实现过程。
关键词:Excel ;Sql Server 2005 ;VBA编程 ;C# ;Visual Studio 2005SQL Server数据库是目前比较流行的一种大型数据库管理系统。
在实际应用中,人们大多习惯使用Excel编辑数据,而不是直接往SQL Server中输入数据,这样我们就可以通过SQL Server本身提供的DTS(Data Transform Service)即数据转换服务功能来实现Excel数据的导入导出。
另一方面,很多数据库软件是通过Excel来进行数据转换。
所以,讨论SQL Server与Excel如何进行数据的交互是有价值的。
1 在Excel导入SQL Server中的数据①在“数据”选项卡上的“获取外部数据”组中,单击“自其他来源”,然后单击“来自SQL Server”。
②在“服务器名称”框中,键入要连接的SQL Server 计算机的名称。
③在“登录凭据”下,执行下列操作之一:要使用当前的Microsoft Windows用户名和密码,请单击“使用Windows 身份验证”。
要输入数据库用户名和密码,请单击“使用下列用户名和密码”,然后在相应的“用户名”和“密码”框中键入您的用户名和密码。
④在“选择数据库”下,选择一个数据库。
在“连接到指定表”下,选择一个特定的表或视图。
或者,也可以清除“连接到指定表”复选框,以便系统向使用此连接文件的其他用户提示表和视图的列表。
⑤(可选)在“文件名”框中,修改建议的文件名。
向SQL server2005中导入excel数据

向SQL server 2005中导入excel数据:1、使用命令行,(数据库中缺少ssis):起因:项目中Excel 数据要导入到数据库中。
操作:1、开启OPENROWSET 和 OPENDATASOURCE 功能。
方式1:开始 -> 程序 -> Microsoft SQL Server 2005 -> 配置工具 -> 外围应用配置 -> [选择计算机 - 选择“使用中的服务器”所在的计算机 - 功能的外围应用配置器 - 选中复制框“启用 OPENROWSET 和 OPENDATASOURCE 支持” - 应用]本机中的使用方式:开始 -> 程序 -> Microsoft SQL Server 2005 -> 配置工具 -> SQL Server外围应用配置器 -> 功能的外围应用配置器 -> 选中复制框“启用 OPENROWSET 和OPENDATASOURCE 支持” -> 应用2、进入查询界面:(即打开数据库)方式1:开始 -> 程序 -> Microsoft SQL Server 2005 -> SQL Server Management Studio[连接对象资源管理器 - 连接“使用中的服务器” - 数据库 - 打开“使用的数据库” - 新建查询 - 执行“导入语句” ]3、步骤2中的导入语句如下:Insert TestXls --注:此为已存在的表,即为目的SELECT * --注:此应据实际需要写上具体字段FROM --注:此为Excel文件,即为来源OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=F:\WebsiteProject\StaffInfo.xls;Extended Properties=Excel 8.0')...[T$]/*已测试通过*/SELECT * into newtable --注:目的表,此为不存在的表,如果存在则会提示:消息2714,级别16,状态6,第1 行数据库中已存在名为'newtable的对象。
基于C#实现SQL Server与Excel间数据的导入导出

基于C#实现SQL Server与Excel间数据的导入导出【摘要】在多数信息系统的使用过程中常涉及到数据库内数据的导入与导出问题,如何实现SQL Server与Excel间数据的导入导出,修正数据在导出过程中出现的格式错误是本文所要解决的主要问题。
【关键词】C#;SQL Server;Excel;数据导入导出1 数据库数据的导入与导出一般信息系统运行初始,首先需要初始化一些基础数据,如数据字典,然后再录入信息系统需要处理的数据。
如果人工初始这些数据,效率低,易出错,这时我们可以提前准备好初始化数据,一次性导入数据库中,此过程称为向数据库导入数据。
当信息系统运行一段时间后,需要将其中一些数据导出作为备份,或将导出数据进行格式处理后生成相应报表,一般将数据库数据导出为相关文件,此过程称为由数据库导出数据。
2 数据导出存在问题当数据库数据导出至Excel文件时,通常有如下几种数据发生变化:①形如“001”的字符串数据导出至Excel工作表单元格时,变为数值“1”。
②形如“220203************”的字符串数据导出至Excel工作表单元格时,变为数值“2.20203E+17”。
③形如“2012-1-2”的日期数据导出至Excel工作表单元格时,变为“2012/1/2”,日期格式发生变化。
发生以上数据变化的原因是Excel工作表单元格默认格式为“常规”引起的。
在下面的示例中将给出解决方法。
3 示例实现本示例实现客户表(client)数据的导入与导出。
程序运行界面如图1所示,客户表各字段类型如图2所示,准备导入数据的Excel工作表数据如图3所示,导入数据后客户表如图4所示,由客户表导出数据至Excel工作表显示如图3所示。
说明:本文仅实现数据导入导出过程中涉及的重要步骤及方法。
实现步骤:(1)添加引用为项目添加.NET引用:Microsoft.Office.Interop.Excel,版本11。
基于C#的Excel数据导入导出SQL Server的研究与实现

基于C#的Excel数据导入导出SQL Server的研究与实现在排球成绩测评系统实际应用中,导入学生信息和导出学生成绩是提高数据录入速度和快速输出的有效途径。
本文详细介绍了使用C#语言、采用SqlBulkCopy类将Excel数据表导入到SQL Server数据库,以及将数据库中的数据导出到Excel数据表中的方法。
标签:C#Excel SQL Server导入导出1概述Excel是办公中常用的电子表格处理工具,SQL Server是目前流行的数据库管理系统,均在信息系统中被广泛使用[1,2]。
基于安全性、通用性和共享性等考虑,信息系统一般都会给用户提供借助Excel进行数据导入导出数据库的功能[3,4]。
排球成绩测评系统中的学生信息可以逐个添加,也可以按班级从Excel 中整体导入;系统中的班级成绩信息、不及格成绩信息需要导出到Excel中。
本文介绍在.Net环境下,使用C#编程实现排球成绩测评系统中Excel数据与SQL Server2005数据库中数据的导入导出。
2导入数据2.1SqlBulkCopy类导入数据需要使用SqlBulkCopy类。
SqlBulkCopy类提供了一种将其它源的数据批量复制到Sql Server数据库表中高性能的方法。
SqlBulkCopy包含可以重载的方法WriteToServer,它用来从其它数据的源复制数据到数据的目的地。
WriteToServer方法可以处理的数据类型有DataRow[]数组、DataTable和DataReader,可以根据具体情况使用相应的数据类型。
SqlBulkCopy 复制数据的原理是采用SQL Server提供的bcp命令提示符实用工具进行数据的批量复制。
bcp在SQL Server实例和数据文件之间以用户指定的格式复制数据[5,6]。
2.2实现学生信息按班级批量导入学生信息添加窗口如图1(a)所示。
需要先选定班级,再为该班级批量导入学生。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server2005与Excel之间的导入、导出
一、sql2005中导入excel中数据
方法一:
利用SQL Server2005自带的DTS工具,手工导入,详细操作请看图。
具体操作为:
导入成功后,表中数据如下所示:
方法一优缺点:
优点:傻瓜式操作,操作简单,容易掌握。
缺点:用此种方法导入时,excel表格必须很规范才行,也就是说如果想导入后表中的字段和excel表的标题行对应,那么标题行最好放
在excel表格的第一行,否则导入的数据很混乱。
而且当数据不完整
或者数据格式不正确的情况下,使用向导也会出错。
这时就要采用方法二。
方法二:
在查询分析器里,直接写 SQL语句:
1、如果是导入数据到现有表,则采用
INSERT INTO 表名 SELECT * FROM
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=d:\test.xls',sheet1$)
的形式
2、如果是导入数据并新增表,则采用
SELECT * INTO 表名 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=d:\test.xls',sheet1$)
的形式。
以上语句是将 EXCEL文件里 SHEET1工作表中所有的列都读进来,如果只想导部分列,可以
INSERT INTO 表 (a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=d:\test.xls',sheet1$)
注意:SQL Server数据库远程操作中,在使用OPENROWSET
/OPENDATASOURCE前首先要启用Ad Hoc Distributed Queries服务,因为这个服务不安全所以SqlServer默认是关闭的。
(1)启用Ad Hoc Distributed Queries的方法
启用Ad Hoc Distributed Queries的方法,执行下面的查询语句就可以了:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
(2)关闭Ad Hoc Distributed Queries的方法:使用完毕后,记得一定要关闭它,因为这是一个安全隐患,切记执行下面的SQL语句:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
方法二优缺点:
优点:在用DTS工具导入无法成功时,可以采用该方法。
较方法一成功率较高。
缺点:要用到语句,操作复杂,语句不好记,且在运行语句时要注意的问题较多。
sql2005中数据导出至excel中数据
方法一:利用SQL Server2005自带的DTS工具,手工导出
和上面一样,只是选择导出数据即可,数据源和数据目标正好相反,这里不再赘述。
方法二:
在查询分析器里,直接写 SQL语句:
如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用: insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=d:\test.xls',sheet1$)
select * from 表
这里同样注意在运行导出语句前先启用Ad Hoc Distributed Queries服务,运行完后,再关闭d Hoc Distributed Queries服务,启用和关闭方法和上面一样,这里不再重复。