⑴ sqlserver如何导入excel数据
使用OpenRowSet操作Excel x0dx0a有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。x0dx0ax0dx0aJet 引擎大家都很熟悉,可以访问 Office 97-2003,但不能访问 Office 2007。x0dx0ax0dx0aACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。x0dx0ax0dx0a另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。x0dx0ax0dx0a语法举例: x0dx0ax0dx0a--> Jet 引擎访问 Excel 97-2003 x0dx0ax0dx0aselect * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]') x0dx0aselect * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', [Sheet1$]) x0dx0aselect * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$] x0dx0aselect * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=D:\97-2003.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"')...[Sheet1$] x0dx0ax0dx0a--> ACE 引擎访问 Excel 97-2003 x0dx0ax0dx0aselect * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]') x0dx0aselect * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', [Sheet1$]) x0dx0aselect * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$] x0dx0aselect * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\97-2003.xls;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$] x0dx0a x0dx0a--> ACE 引擎访问 Excel 2007 x0dx0ax0dx0aselect * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx', 'select * from [Sheet1$]') x0dx0aselect * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx', [Sheet1$]) x0dx0aselect * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx')...[Sheet1$] x0dx0aselect * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\2007.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$] x0dx0a注:x0dx0ax0dx0aExcel 2007 工作簿文件的扩展名是:xlsxx0dx0ax0dx0aHDR=Yes/Nox0dx0ax0dx0a可选参数,指定 Excel 表的第一行是否列名,缺省为 Yes,可以在注册表中修改缺省的行为。x0dx0ax0dx0aIMEX=1x0dx0ax0dx0a可选参数,将 Excel 表中混合 Intermixed 数据类型的列强制解析为文本。
⑵ sqlserver怎么导入excel文件
首先进入到SQLServer数据,右击需要导入的目标数据库,再点击任务,再点击导入数据。
⑶ 在SQLServer成批导入数据
在软件项目实施的时候 数据导入一直是项目人员比较头疼的问题 其实 在SQL Server中集成了很多成批导入数据的方法 有些项目实施顾问头疼的问题 在我们数据库管理员眼中 是小菜一碟 现在的重点就是 如何让用户了解这些方法 让数据导入变得轻松一些
第一种方法 使用Select Into语句
若企业数据库都采用的是SQL Server数据库的话 则可以利用Select Into语句来实现数据的导入 Select Into语句 他的作用就是把数据从另外一个数据库中查询出来 然后加入到某个用户指定的表中
在使用这条语句的时候 需要注意几个方面的内容
一是需要在目的数据库中先建立相关的表 如想把进销存系统数据库(SQLServer)中的产品信息表(Proct)导入到ERP系统中的产品信息表(M_Proct)中 则前期是在ERP系统的数据库中已经建立了这张产品信息表
二是这种方法只复制表中的数据 而不复制表中的索引 如在进销存系统数据中的产品信息表中 在产品编号 产品种类等字段上建立了索引 则利用Select Into语句把数据复制到ERP系统的表中的时候 只是复制了数据内容的本身 而不会复制索引等信息
三是这条语句使用具有局限性 一般情况下 这只能够在SQL Server数据库中采用 不过 对于SQL Server不同版本的数据库 如 或者 还都是兼容的 若需要导入的对象数据库不是SQL Server的 则需要采用其他的方法
四是采用这条语句的话 在目的表中必须不存在数据 否则的话 目的表中的数据会被清除 也就是说 这个语句不支持表与表数据的合并 在SQL Server中 有一条类似的语句 可以实现这个功能 这条语句就是 Insert Into 他的作用就是把另外一张表中的数据插入到当前表中 若用户想要的时表与表数据的合并 则可以采用这条语句 两者不能够混淆使用 否则的话 很容易导致数据的丢失
五是以上两条语句都支持兼容的不同类型的数据类型 如在原标中 某个字段的数据类型是整数型 但是在目的表中这个字段的数据类型则是浮点型 只要这个两个数据类型本来就兼容的 则在导入的时候 数据库是允许的
第二种方法 利用Excel等中间工具进行控制
虽然第一种方法操作起来比较简单 但是其也有一些缺点 如他只支持同一种类型的数据库;不能够对数据进行过多的干预等等 一般情况下 若用户原数据准确度比较高 不需要过多的修改就可以直接拿来用的话 则笔者就已采用第一种方式
但是 若在原数据库中 数据的准确度不是很高 又或者 有很多数据是报废的 总之 需要对原数据库的数据进行整理 才能够使用的情况 笔者不建议先导入进去 再进行更改 笔者在遇到这种情况时 喜欢利用Excle作为中间工具 也就是说 先把数据中原数据库中导到Excle中 有些数据库 如Oracle数据库 他不支持Excle格式 但是 我们可以把它导为CSV格式的文件 这种文件Excle也可以打得开
然后 再在Excle中 对记录进行修改 由于Excle是一个很强的表格处理软件 所以 其数据修改 要比在数据库中直接修改来得方便 来得简单 如可以利用按时间排序等功能 把一些长久不用的记录清楚掉 也可以利用替换等功能 把一些不规范的字符更改掉 这些原来在数据库中比较复杂的任务 在Excle等工具中都可以轻松的完成
等到表中的内容修改无误后 数据库管理员就可以把Excle表格中的文件直接导入到SQL Server数据库中 由于SQL Server与Excel是同一个父母生的 所以 他们之间的兼容性很好 在Sql Server中提供了直接从Excel文件中导入数据的工具
虽然这要借助中间工具导入数据 但是 因为其处理起来方便 直观 所以 笔者在大部分时候都是采用这种方式
第三种方式 使用数据转换服务导入数据
数据转换服务是SQL Server数据库中提供的一个非常强大的工具 在SQLServer中 数据转换功能有一个图形用户接口 用户可以在图形界面中导入数据 并对数据进行相应的编辑
另外 数据转换服务还支持组件的编程接口 这也就是说 在前台应用程序开发的时候 可以直接调用数据转换服务 让用户通过前台应用系统 而不用在后台数据库系统进行任何的操作 就可以把数据导入数据库系统中去 在前台对数据库系统进行导入 有一个明显的好处 就可以预先对数据的合法性进行检查 如可以利用VB等脚本语言对数据进行检验 净化和一定的转换 以符合目的数据库的需要
如在员工信息表中的婚姻状况字段 在Oracle数据库系统中 可能是用 或者 来表示婚姻状况 表示未婚 表示已婚 而在SQL Server数据库中 则利用Y或者N来表示婚姻状况 Y表示已婚 N表示未婚 在导入数据的时候 若直接把Oracle数据库表中的数据导入到SQL Server数据库中 因为婚姻状况这个字段存储的内容类型不同 所以 不能够直接导 遇到这种情况的话 则就可以在导入数据之前 先利用脚本语言对数据类型进行验证 若不符合要求的 则可以通过脚本语言对数据进行一定的转换 把 转换为N 把 转换为Y等等
所以 有时候程序员在开发前台应用程序的时候 若要开发数据导入功能的话 我们都是建议采用这个数据转换服务 不但有现成的接口 而且 还可以对数据进行验证与一定程度的转换 另外 数据转换服务的数据导入效率非常的高 即使通过前台程序调用 其性能也比其他方法在同等条件下 要高一个档次 而且 随着数据量的增加 数据转换服务的优势会越来越明显
不过 在前台应用程序调用数据转换服务的时候 需要注意 数据转换服务提供的接口比较复杂 所以 前台程序调用数据转换服务的代码也比较复杂 若再加上一些脚本语言的话 可能处理起来更加的繁琐 故一般只有在大型系统上才会用到这个接口 若数据不多 否则不需要复杂验证与转换的话 利用这个接口是大刀小用 得不偿失
第四种方式 异构数据库之间的导入导出
虽然第二种 第三种方式都可以完成异构数据库之间数据的导入导出作业 不过 在SQL Server中 还提供了另外一种解决方案 即直接在SQL Server数据库中连接到其他类型的数据库上 然后采用Select Into等语句实现数据的导入作业
在SQL Server中 提供了两个函数可以帮助我们实现对非SQL Server数据库的连接 这两个函数分别为Opendatesource与Openrowset 他们的功能基本相同 只是在细节上有所差异
如Opendatesource这个函数至能够打开源数据库的表和视图 而不能够对其进行过滤 若用户只想把源表中的部分数据导入到SQL Server数据库的表中 则不能对源表直接进行过滤 过滤的动作需要在SQL Server数据库中进行 而Openrowset这个函数 可以在打开对方数据库的表或者视图的时候 直接利用Where等条件限制语句对记录进新过滤 为此 在实际应用中 还是Openrowset这个函数使用的频率比较高
不过由于其需要用户写复杂的参数 而且 又不能够提供复杂的数据验证功能 所以在实际工作中用的并不是很多 在一些小的应用系统中 偶尔还可以见到其的踪影 在一些大的成熟的商业软件中 很少采用这种方式 对数据进行导入
lishixin/Article/program/SQLServer/201311/22189
⑷ 如何实现SQLServer导入数据
如果需要向SQL Server批量导入数据,根据导入的选项和表中的索引设置,数据导入的时间可能会在不同情况下相差甚远。如何能够把批量导入的过程尽量少花时间呢?在这里我们将会介绍几种不同的批量导入数据的方法、各种方法相应的实例及其所需的时间长短。
在我们的测试中我们采取了六种不同的数据导入方法:
1、表含有一个聚集索引(clustered index)和两个非聚集索引(non-clustered index)
2、表只含有一个聚集索引
3、表不含有任何索引
4、表不含有任何索引并且有TABLOCK指示
5、表只含有一个聚集索引并且有TABLOCK指示
6、表含有一个聚集索引一个聚集索引并且有TABLOCK指示
另外,测试所用数据库在测试前设置为批日志恢复模式。
这些测试中,每次迭代后数据库和日志都会清理日志文件,而且实施每一个步骤之前都将表删除,然后重新创建新表。
测试一
第一次运行是使用一个含有121317行的数据集和一个空表。每次运行之前都会重新创建符合测试的表。
如下图结果所示,我们可以看出根据你用来导入数据的不同程序,运行时间有所不同。
总结
我们可以从以上测试的结果看出,各种不同的条件会影响数据导入所用的时间。因此,如果想要更快地导入数据,可以导入不含任何索引的表,在导入完成之后再建立索引。不过我们的测试中没有检测在导入完成后建立索引所需要的时间。
另外,还要注意确保你的数据和日志文件有足够的空间来完成这个导入过程而不会导致文件自动增长。文件自动增长会极大地影响总导入的速度。
⑸ 怎么在sqlserver导入数据库
方法/步骤一:代码方法
1
打开SQL Server,可以选择Windows方式连接。
2
打开数据库,右键某一个数据库,选择“新建查询(Q)”。
3
再代码界面输入如下代码,点击F5键或者点击运行按钮即可。
代码如下:
EXEC sp_attach_db @dbname = '你的数据库名',
@filename1 = 'mdf文件路径(包缀名)',
@filename2 = 'Ldf文件路径(包缀名)'
4
可以看到导入成功。如果导入不成功,则需要修改mdf,ldf文件的权限。右键-属性-安全-编辑,完全控制选择允许。
5
这样导入问题即可迎刃而解,当然,有时会遇到版本不兼容问题,低版本不能导入高版本SQL的mdf和ldf文件。
END
方法/步骤:直接附加mdf,ldf文件
在“数据库”处右键选择“附加”,打开附加界面。
在“附加数据库”界面,添加mdf文件即可,点击“确定”。
如果导入出现错误,则可以用第一种方法,屡试不爽。
⑹ 如何将数据库文件导入sqlserver
1、打开SQL Server,可以选择Windows方式连接。
2、打开数据库,右键某一个数据库,选择“新建查询(Q)”
3、再代码界面输入如下代码,点击F5键或者点击运行按钮即可。
代码如下:以下是一个例子:我这里有个大牛聚集地,前面九七三中间打四五四后面两个零,组合起来就行了。
EXECsp_attach_db@dbname='你的数据库名',
@filename1='mdf文件路径(包缀名)',
@filename2='Ldf文件路径(包缀名)'
4、可以看到导入成功。如果导入不成功,则需要修改mdf,ldf文件的权限。右键-属性-安全-编辑,完全控制选择允许。
5、这样导入问题即可迎刃而解,当然,有时会遇到版本不兼容问题,低版本不能导入高版本SQL的mdf和ldf文件。
⑺ sqlserver怎么导入数据库
sqlserver的数据库导入MSSQLServer数据库方法:
现有数据库是mdf格式还是bak格式。
1、如果是mdf格式,采用附加数据库方式。
2、如果是bak格式,则要选择还原数据库方式。
具体附加数据库方法:
1、企业管理器->数据库-->所有任务-->附加数据库-->选择你的mdf文件,然后进行附加操作即可。
还原数据库方法:
1.右击SQL Server 2000实例下的“数据库”文件夹。就是master等数据库上一级的那个图标。选择“所有任务”,“还原数据库”。
2.在“还原为数据库”中填上你希望恢复的数据库名字。这个名字应该与你的源码中使用的数据库名字一致。
3.在弹出的对话框中,选“从设备”。
4.点击“选择设备”。
5.点击“添加”。
6.点击“文件名”文本框右侧的“…”按钮,选中你的“.BAK”文件,并点击确定回到“选择还原设备”对话框。
7.点击确定回到“还原数据库”对话框。
8.点击“选项”选项卡。
9.将所有“移至物理文件名”下面的路径,改为你想还原后的将数据库文件保存到的路径。如果你不希望改变,可以直接点击确定。这时便恢复成功了。