sqlserver数据库导入数据操作详解(图)www.129028.com金沙:

日期:2020-04-29编辑作者:数据库

Microsoft SQL Server Management Studio是SQL SERVER的客户端工具,相信大家都知道。我不知道大伙使用导入数据的情况怎么样,反正我最近是遇到过。主要是因为没有远程数据库服务器的权限,而需要测试新修改的内容对旧数据的冲突。因为流程改变,免不了需要修改数据来适应新的变化。所以需要在测试环境里面去模拟真实环境的数据。当时还搞笑,直接是粘贴到EXCEL,然后再复制到数据库。对于一般来说,这种方式也可以,但是对于一些特殊的字符,如果直接粘贴到EXCEL里面的话,并不能正常显示出来,比如说bit字段、DateTime字段。

--如果接受导入数据的SQL表已经存在

不知道大家是否都知道微软给我们提供了数据的导入和导出的功能。下面就直接贴上操作步骤,因为也比较简单,所以也没有特别需要说明。直接参照如下图:

Insert Into 已经存在的SQL表名 Select * From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF')

下面就贴图并简单说明,以导入数据为例,导出数据功能好像跟导入数据完全一样,不知道为什么要搞两个出来。

--也可以对应列名进行导入,如:

下图也有说明了,选择要从中复制数据的源,也就是设置源头数据,比如从A复制到B,这里就是设置A的数据库。

Insert Into 已经存在的SQL表名 (列名1,列名2...) Select (对应列名1,对应列名2...) From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from aa.DBF')

接着上面说从A复制到B,下图就是设置B的数据库

-------------如果接受导入数据的SQL表不存在,导入时创建

下图提供两种方式来选择复制的数据源,如果A跟B是一样的结构,那么选择第一种方式即可,另一种方式则是个性化选择需要复制的数据源

--方法一:有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。

因为Demo数据库只有一张表,所以下图只显示一张表,如果是有多张表,则都会显示出来,勾选我们需要复制的表即可

Select * Into 要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select * from dbf表名.DBF')

注:这里面需要说明一下的是,如果A里面的表使用的主键是自增长的方式,那么你就需要把B里面表的自增长方式先去掉。因为这里面从A复制到B是所有字段的复制,包括自增长的ID也一样需要复制。等复制完数据之后,再改回B数据库的表为自增长方式。

--方法二:有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。

Select * Into TEMP1 From openrowset('VFPOLEDB.1','C:';'admin';'' ,'select * from dbf表名.DBF')
--如果没有安装VFP,需要把vfpoledb.dll拷贝到SYSTEM目录下,并注册。

--方法三:导入SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方式导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。

Select * Into 要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=c:','select * from dbf表名.dbf')

--方法四:导入SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方式导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。

Select * Into 要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=c:','select * from dbf表名.dbf')

--方法五:用BDE驱动导入时,再用VFP打开源表时不会提示“不能存取文件”

Select * From OPENROWSET('MSDASQL','CollatingSequence=ASCII;DBQ=D:SEND;DefaultDir=D:SEND;Deleted=0;Driver={Driver do Microsoft dBase (*.dbf)};FIL=dBase 5.0','select * from dbf表名.DBF') A
--前提:先在机器上安装BDE的驱动

--也可以只导几个字段

Select * Into 要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:','select 字段1,字段2 from aa.DBF')

/*说明:
SourceDB=c: c:是dbf文件的存放目录
aa.Dbf 是dbf文件名
*/

工具导入1:通过SQL Server的“导入导出数据”工具(DTS)

本文由www.129028.com金沙发布于数据库,转载请注明出处:sqlserver数据库导入数据操作详解(图)www.129028.com金沙:

关键词:

SQL Server 2000的安全配置

SQLserver2000数据库应用非常广泛,一旦出现安全问题,造成的损失往往难以估量!应提前预防,防患于未然。这里,我...

详细>>

如何查看某个查询用了多少TempDB空间www.129028.com金沙

DECLARE @read BIGINT, @write BIGINT; SELECT @read = SUM(num_of_bytes_read), @write = SUM(num_of_bytes_written) FROM tempdb.sys.database_files AS DBFJOI...

详细>>

浅析SQL语句中GROUP BY的用法

GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想 你用了GROUP BY 按 ITEM.ITEMNUM这个字段分组,那其他字...

详细>>

微软总是试图使它的软件安装尽可能地简单顺www.129028.com金沙

如果你没有特意记录安装日期,那么有没有办法从SQL Server里查询到呢?想想我们在安装的时候,肯定会有Windows认证登...

详细>>