SQL2005数据库导入导出办法
- 格式:docx
- 大小:386.37 KB
- 文档页数:4
SQL Server2005与Excel之间的导入、导出一、sql2005中导入excel中数据方法一:利用SQL Server2005自带的DTS工具,手工导入,详细操作请看图。
具体操作为:导入成功后,表中数据如下所示:方法一优缺点:优点:傻瓜式操作,操作简单,容易掌握。
缺点:用此种方法导入时,excel表格必须很规范才行,也就是说如果想导入后表中的字段和excel表的标题行对应,那么标题行最好放在excel表格的第一行,否则导入的数据很混乱。
而且当数据不完整或者数据格式不正确的情况下,使用向导也会出错。
这时就要采用方法二。
方法二:在查询分析器里,直接写 SQL语句:1、如果是导入数据到现有表,则采用INSERT INTO 表名 SELECT * FROMOPENROWSET('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默认是关闭的。
Access导入到SQL Server数据库中的三种方法SQL Server数据库以2005为例,导入方法如下:一.使用SQL Server的数据库导入/导出功能。
首先在要导入到的SQL Srever数据库上右键,选择“任务”,然后选择“导入数据”,按照提示下一步直到完成即可成功将Access数据库导入到SQL Server数据库中,此种方法如果SQL Server数据库中没有相应的数据表,则会自动创建改表,但是约束等表关系不会同步导入,如果SQL Server中有相同名称并且属性相同的数据表,则会直接将Access数据库中的对应表的数据导入。
在导入过程中,还可以通过SQL语句指定要导入的数据。
使用这种方法一般会出现以下两种错误:(1)无法建立数据流连接为连接管理器“{FFBF32BF-EE84-4F94-ACDB-D4C5AC4C2941}”指定的连接类型“OLEDB”未被识别为有效的连接管理器类型。
当视图创建未知连接类型的连接管理器时会返回此错误。
请检查连接类型名称的拼写是否正确。
(2)无法连接源组件找不到连接“SourceConnectionOLEDB”。
如果找不到特定的连接元素,Connections集合将发生此错误。
其他信息:找不到连接“SourceConnectionOLEDB”。
如果找不到特定的连接元素,Connections集合将发生此错误。
({0DE0CDBB-BCD6-4261-A118-B0CB22DA3C4A})具体解决办法是打开SqlServer Configuration Manage,右键单击“Sql Server Integrati on Services”,选择“属性”,将登录身份修改为“Local System(本地系统)”,然后重新启动该服务。
二.使用Access数据库的数据升迁功能。
首先点击“工具”菜单,选择“数据库实用工具”,选择“升迁向导”,这是会提示你该功能尚未安装,需要安装XXX之类的信息,点击安装,等待安装成功后,即可弹出“升迁向导”对话框,按照提示下一步直到完成,即可将Acces s数据库导入到SQL Server数据库中。
sqlserver2005导出包含数据的脚本--SQL Server里面导出SQL脚本(表数据的insert语句)CREATE PROCEDURE pOutputData@tablename sysnameASdeclare @column varchar(1000)declare @columndata varchar(1000)declare @sql varchar(4000)declare @xtype tinyintdeclare @name sysnamedeclare @objectId intdeclare @objectname sysnamedeclare @ident intset nocount onset @objectId=object_id(@tablename)if @objectId is null -- 判断对象是否存在beginprint 'The object not exists'returnendset @objectname=rtrim(object_name(@objectId))if @objectname is null or charindex(@objectname,@tablename)=0 --此判断不严密beginprint 'object not in current database'returnendif OBJECTPROPERTY(@objectId,'IsTable') < > 1 -- 判断对象是否是tablebeginprint 'The object is not table'returnendselect @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80if @ident is not nullprint 'SET IDENTITY_INSERT '+@TableName+' ON'declare syscolumns_cursor cursorfor select ,c.xtype from syscolumns c where c.id=@objectid order by c.colidopen syscolumns_cursorset @column=''set @columndata=''fetch next from syscolumns_cursor into @name,@xtypewhile @@fetch_status < >-1beginif @@fetch_status < >-2beginif @xtype not in(189,34,35,99,98) --timestamp不需处理,image,text,ntext,sql_variant 暂时不处理beginset @column=@column+case when len(@column)=0 then'' else ','end+@nameset @columndata=@columndata+case when len(@columndata)=0 then '' else ','','','end+case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,charwhen @xtype in(231,239) then '''N''''''+'+@name+'+''''''''' --nvarchar,ncharwhen @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetimewhen @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --smalldatetimewhen @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifierelse @name endendendfetch next from syscolumns_cursor into @name,@xtypeendclose syscolumns_cursordeallocate syscolumns_cursorset @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablenameprint '--'+@sqlexec(@sql)if @ident is not nullprint 'SET IDENTITY_INSERT '+@TableName+' OFF' GO执行时:exec UspOutputData +表名。
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中导入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的对象。
[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。
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 2005 导入sql文件
1.使用powerdesigner或其他数据库生成软件,生成sqlserver2005版本的sql文件,如下图
所示:
(红色框住的文件就是要导入的sql文件)
(如果你未安装SQL Server 2005及Sql Server,请先安装Sql Server Manager Studio Express,后者为Sql Server 的可视化工具)
2.打开Sql Server配置管理器:启动SQL Server(SQLEXPRESS)
3.关掉Windows防火墙(最好设置一下),在数据库外围配置器中选择【服务和连接的外
围应用配置器】,再选择【远程连接】选择【本地连接和远程连接】,选择【同时使用
TCP/IP和named pipes】。
这个默认是不启用的。
如下图所示:
4.再次启动,SQL Server(SQLEXPRESS):
5.打开Sql Server Manager Studio Express
6.新建数据库,本人此处建立数据库名为:companytest,然后点击确定(其他条件为默认)
7.在companytest数据库点击右键,然后点击新建查询连接:
8.打开已经为SQL Server 格式的sql文件,把其内容复制到上图红色框着的地方:
9.点击工具栏上的执行按钮,消息框中出现“命令已成功完成”
10.最终结果如下:(找到新建数据库的表)。
MS Sql Server 2005无法导入平面数据问题解决办法所需导入的数据格式文件,如EXCEL和ACCESS,以及TXT或RTF文件均无法导入SQL Server 2005的数据库,但均可以导入SQL Server2000数据库。
在网上查询说需要打补丁,打到SP2也无济于事,把目标数据表的字段设置为最大也不行。
最后在国外网站找到了解决办法:导入过程中的平面文件源的高级设置出了问题。
在SQL Server 2005数据库的导入导出向导过程中,选择了平面数据源,选定了平面文件后,要单击左侧的高级选项,将OutPutColumnWidth(输出列宽度)设置大,根据你列字段的长度,默认的是50,如果你的列中有超过50个字符长度,将会在导出导入过程中提示下面的错误。
设置好后,就可以开始你的导入之旅,是不是很畅。
OutPutColumnWidth的解释:此列在数据流中的宽度,以单字符表示。
组合字符可能需要两个或更多单字符空间。
意思是,如果是20个汉字,那么长度至少要设置为20×2=40。
最后在微软的网站上找到关于该问题的详细解释。
附我在向SQL Server 数据库导入TXT数据过程遇到的错误信息,解决办法在上面:操作已停止...- 正在初始化数据流任务 (成功)- 正在初始化连接 (成功)- 正在设置 SQL 命令 (成功)- 正在设置源连接 (成功)- 正在设置目标连接 (成功)- 正在验证 (成功)- 准备执行 (成功)- 执行之前 (成功)消息* 信息 0x402090dc: 数据流任务: 已开始处理文件“F:\Documents and Settings\listening\桌面\佛山.txt”。
(SQL Server 导入和导出向导)- 正在执行 (错误)消息* 错误 0xc02020a1: 数据流任务: 数据转换失败。
列“列 2”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。
SQL2005中数据导入/出步骤以前在2000里可以数据导入导出,当然在2005里也不例外,同样有这样的操作,只是在操作上和2000有点区别,下面通过图文的方法教你怎样导入导出数据。
操作步骤:1、如图,在“对象资料管理器”里,右击你要导入导出数据的数据库,选择“任务”里的导入数据或导出数据,我这里以导入数据为例,导出数据和导入操作差不多。
2、选择后,会出现下图界面,选择数据源,数据源就表示你要从哪个数据库导入数据。
数据库名就是你所使用的SQL服务器,如果是运程数据库,可直接写IP地址。
这里我以本地为例。
身份验证就是你用什么方式登录,如果是远程,一般用SQL Server身份验证,验证后,他会在数据库的列表里显示所有数据库,你要找到你要导入或导出的数据库,然后点“下一步”。
3、当出现下图界面时,目标数据,目标表示你需要导入到哪个数据库,如果是远程数据库,同样直接输入IP地址,然后用SQL身份验证。
和数据源操作差不多。
4、点下一步后,会出现如下图界面,默认就是第一个选项,不要管他,直接点“下一步”。
5、点了下一步后,就会出现下图的界面,当然你的数据库表和我这个不一样,你要在你需要导入的表前面打上钩,在目标里就会有相应的数据库,如果他没有在目标库里找到表,就会自动新建个表。
同时在选择表后,点击下面的“编辑映射”里,可以指定源表和目标表对应的字段,如果你有的字段不需要导入,那你只要在目标字段里选择“忽略”就可以了,选择好后,点“确定”,再点下一步。
6、在出现下面界面时,不要管,只要点“下一步”或“完成”,然后再点一次完成。
7、出现下图就说明已在导入数据了,等数据导入完成后,就OK了。
一、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 数据库导出、导入办法
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)即可。