SQLServer导入导出教程及错误排查

合集下载

SQLServer中导入导出数据的三种方式(二)

SQLServer中导入导出数据的三种方式(二)

(2)灵活度不同。

OPENDATASOURCE只能打开相应数据库中的表或视图,如果需要过滤的话,只能在SQLServer中进⾏处理。

⽽OPENROWSET可以在打开数据库的同时对其进⾏过滤,如上⾯的例⼦,在OPENROWSET中可以使⽤
SELECT*FROMtable1对abc.mdb中的数据表进⾏查询,⽽OPENDATASOURCE只能引⽤table1,⽽⽆法查询table1。

因此,OPENROWSET⽐较OPENDATASOURCE更加灵活。

2.使⽤命令⾏BCP导⼊导出数据
很多⼤型的系统不仅仅提供了友好的图形⽤户接⼝,同时也提供了命令⾏⽅式对系统进⾏控制。

在SQLServer中除了可以使⽤SQL语句对数据进⾏操作外,还可以使⽤⼀个命令⾏⼯具BCP对数据进⾏同样的操作。

BCP是基于DB-Library客户端库的⼯具。

它的功能⼗分强⼤,BCP能够以并⾏⽅式将数据从多个客户端⼤容量复制到单个表中,从⽽⼤⼤提⾼了装载效率。

但在执⾏并⾏操作时要注意的是只有使⽤基于ODBC或SQLOLEDB的API的应⽤程序才可以执⾏将数据并⾏装载到单个表中的操作。

BCP可以将SQLServer中的数据导出到任何OLEDB所⽀持的数据库的,如下⾯的语句是将authors表导出到excel⽂件中。

bcppubs.dbo.authorsoutc:\temp1.xls
-c-q-S"GNETDATA/GNETDATA"-U"sa"-P"password"。

SQLServer中数据导入导出三种方法

SQLServer中数据导入导出三种方法

当我们建⽴⼀个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进⾏数据检验、净化和转换时,将会⾯临很⼤的挑战。

幸好SQL Server为我们提供了强⼤、丰富的数据导⼊导出功能,并且在导⼊导出的同时可以对数据进⾏灵活的处理。

在SQL Server中主要有三种⽅式导⼊导出数据:使⽤Transact-SQL对数据进⾏处理;调⽤命令⾏⼯具BCP处理数据;使⽤数据转换服务(DTS)对数据进⾏处理。

这三种⽅法各有其特点,下⾯就它们的主要特点进⾏⽐较。

⼀、使⽤⽅式的⽐较 1. 使⽤Transact-SQL进⾏数据导⼊导出 我们很容易看出,Transact-SQL⽅法就是通过 SQL语句⽅式将相同或不同类型的数据库中的数据互相导⼊导出或者汇集在⼀处的⽅法。

如果是在不同的SQL Server数据库之间进⾏数据导⼊导出,那将是⾮常容易做到的。

⼀般可使⽤SELECT INTO FROM和INSERT INTO。

使⽤ SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建⽴⼀个空表,然后再将源表中的数据导⼊到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。

⽽INSERT INTO的功能是将源数据插⼊到已经存在的表中,可以使⽤它进⾏数据合并,如果要更新已经存在的记录,可以使⽤UPDATE。

SELECT * INTO table2 FROM table1 --table1和table2的表结构相同 INSERT INTO table2 SELECT * FROM table3 --table2和table3的表结构相同 当在异构数据库之间的进⾏数据导⼊导出时,情况会变得复杂得多。

⾸先要解决的是如何打开⾮SQL Server数据库的问题。

在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库,这两个函数是OPENDATASOURCE和OPENROWSET。

SQLServer数据导入技巧详解

SQLServer数据导入技巧详解

SQLServer数据导入技巧详解SQL Server是一个著名的关系型数据库管理系统,可用于管理大量的数据。

在SQL Server中,数据的导入是很重要的,不仅要保证数据的完整性和准确性,也可能涉及到大量数据的导入和处理。

为了解决这个问题,本文将向你介绍SQL Server中的数据导入技巧。

数据源首先,需要准备好要导入的数据源。

SQL Server支持多种数据源格式,包括CSV、Excel、Access、文本文件等。

其中,CSV格式是最常用的一种格式。

CSV文件是使用逗号分隔的纯文本文件,可以使用文本编辑器打开和修改。

有些软件还支持用Excel导入CSV文件生成。

在使用CSV格式时,需要注意在字段中间不应该加上逗号。

如果有逗号,可以将该字段用双引号括起来。

Excel文件也是常见的数据源格式,但是使用Excel文件进行数据导入,需要注意文件的格式和内容。

特别是在使用中文进行数据导入时,很容易出现编码问题。

这时候需要将文件另存为UTF-8格式的文件,再进行导入。

Access格式和文本文件也可以用于数据导入,但是需要注意文件的格式和内容,如果格式不对,导入时也可能会出现问题。

使用导入向导在SQL Server中,可以使用导入和导出向导来帮助我们完成数据导入。

使用导入向导时,需要选择数据源类型、连接字符串和导入的目标表等参数。

不同的数据源类型需要选择不同的数据源驱动程序。

然后,可以使用“预览”和“编辑映射”来调整导入的数据,以确保数据的完整性和准确性。

对于大量数据的导入,我们可以使用批量插入方法,将数据以批次的方式插入到数据库中。

这种方式可以提高导入速度,减少系统开销。

同时,还可以使用并行操作来提高数据导入的速度。

导入存储过程除了导入向导之外,我们还可以使用存储过程来完成数据导入。

存储过程是SQL Server中一种特殊的程序单元,可以将复杂的业务逻辑和数据处理操作封装起来,提高系统的安全性和可维护性。

SQL_Server_2005数据导入导出(SQLServer2005数据库维护基础与进阶)

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 Server2005中数据导入导出时出错

在SQL Server2005中数据导入导出时出错

在SQL Server2005中数据导入导出时出错
向SQL Server2005里导入数据是出现错误“SQL 错误描述为: 链接服务器'(null)' 的OLE DB 访问接口'STREAM' 返回了对列'[!BulkInsert].field' 无效的数据”,已打了SQL Server2005的最新补丁,在SQL Server2008里有同样的问题。

BaiDu了下,有人说好像是SQL 2005的一个未公开的Bug,在SQL Server2000里没有这样的问题。

解决:
在SQL Server启动过程中增加参数4808。

1. 在SQL Server 配置管理器中,单击“SQL Server 服务”。

2. 在右窗格中,右键单击SQL Server (<实例名>),再单击“属性”。

3. 在“高级”选项卡的“启动参数”框中,键入“;-T4808”(加分号和-T4808)。

4.设置完成后,重启SQL Server服务,在查询分析器中执行“DBCC tracestatus”,返回结果:
表明参数设置成功。

我正在玩搜狐微博,快来“关注。

SQL2000数据库导出和导入教程

SQL2000数据库导出和导入教程

SQL2000数据库导出和导入教程SQL Server 2000是一种关系型数据库管理系统,支持大型数据库和各种应用程序。

它提供了导出和导入数据的功能,使用户可以将数据从一个数据库导出到另一个数据库,或者从一个数据库导入到另一个数据库。

下面是SQL Server 2000数据库导出和导入的教程。

导出数据:1. 打开SQL Server 2000管理工具,选择要导出数据的数据库。

2.选择“任务”菜单,然后选择“导出数据”选项。

3.在“数据源”对话框中,选择要导出的表或视图。

您还可以指定一个查询来选择特定的数据。

4.在“目标”对话框中,选择将数据导出到的目标数据库或文件。

您可以选择导出到同一服务器上的另一个数据库,或者导出到一个文件。

5.确定导出选项,例如导出可变宽度的文本文件或固定宽度的文本文件,以及使用逗号作为字段分隔符或制表符作为字段分隔符。

6.单击“完成”按钮开始导出过程。

导入数据:1. 打开SQL Server 2000管理工具,选择要导入数据的数据库。

2.选择“任务”菜单,然后选择“导入数据”选项。

3.在“数据源”对话框中,选择包含要导入的数据的数据库或文件。

如果您选择一个文件,您需要指定文件类型和文件位置。

4.在“目标”对话框中,选择要导入数据的目标表或视图。

您还可以选择创建一个新的表来存储导入的数据。

5.如果需要的话,可以在“转换”对话框中进行必要的数据转换。

例如,您可以选择将一个日期字段的格式从YYYYMMDD转换为YYYY-MM-DD。

6.确定导入选项,例如是否忽略导入中的重复行,以及在导入过程中要使用的事务类型。

7.单击“完成”按钮开始导入过程。

导出和导入数据可能会花费一些时间,具体时间取决于数据的大小和服务器的性能。

在导出和导入过程中,您可以查看进度和错误信息。

除了使用SQL Server 2000管理工具进行导出和导入,还可以使用SQL命令进行导出和导入。

例如,您可以使用SELECT INTO语句将数据导出到一个新的表中,然后使用INSERT INTO语句将数据从一个表导入到另一个表中。

sqlserver:错误0xc02020a1:数据流任务1:数据转换失败。列“列0”的数据。。。

sqlserver:错误0xc02020a1:数据流任务1:数据转换失败。列“列0”的数据。。。

sqlserver:错误0xc02020a1:数据流任务1:数据转换失败。

列“列0”的数据。

问题如下:错误 0xc02020a1: 数据流任务 1: 数据转换失败。

列“离⽹时间”的数据转换返回状态值 2 和状态⽂本“由于可能丢失数据,所以⽆法转换该值。

”。

(SQL Server 导⼊和导出向导)错误 0xc0209029: 数据流任务 1: SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。

“源 - YYT_ZHB1_txt.输出[平⾯⽂件源输出].列[离⽹时间]”失败,错误代码为 0xC0209084,⽽且针对“源 - YYT_ZHB1_txt.输出[平⾯⽂件源输出].列[离⽹时间]”的错误⾏处理设置指定⼀旦出错就失败。

在指定组件的指定对象上出错。

可能在此之前已经发出错误消息,提供了有关失败的详细信息。

(SQL Server 导⼊和导出向导)错误 0xc0202092: 数据流任务 1: 处理⽂件“E:\work\渠道规划\2020年联通营业厅规划\甲⽅数据\移⽹话单数据.rar,北京渔⽹-⾯.rar,字段名称.xlsx\移⽹话单数据\YYT_ZHB1.txt”的数据⾏ 1 时出错。

(SQL Server 导⼊和导出向导)错误 0xc0047038: 数据流任务 1: SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。

源 - YYT_ZHB1_txt 的 PrimeOutput ⽅法返回了错误代码 0xC0202092。

管道引擎调⽤ PrimeOutput() 时该组件返回了⼀个失败代码。

虽然该失败代码只与该组件有关,但这个错误是致命的,管道已停⽌执⾏。

可能在此之前已经发出错误消息,提供了有关失败的详细信息。

(SQL Server 导⼊和导出向导)解决办法:第⼀步:点击⾼级第⼆步:将内容含有中⽂的列的“DataType” 换成 "Uncode 字符串 [DT_WSTR]"第三步:继续操作。

SQLServer安装使用报错及解决方案

SQLServer安装使用报错及解决方案

SQLServer安装使用报错及解决方案在SQLServer的安装和使用过程中,可能会遇到一些报错信息,这些问题需要及时解决才能顺利进行数据库的操作。

本文将介绍一些常见的SQLServer安装使用报错,并提供相应的解决方案,帮助读者更好地应对这些问题。

一、无法安装SQLServer在安装SQLServer过程中,有时会出现无法继续安装的情况。

这可能是由于操作系统版本不兼容、安装文件损坏或其他原因引起的。

解决此问题的方案如下:1.检查操作系统版本:确保所使用的操作系统版本与SQLServer的系统要求相匹配。

2.重新下载安装文件:如果安装文件损坏,可尝试重新下载安装文件,并确保下载的文件完整可用。

3.运行安装程序时使用管理员权限:右键点击安装程序,选择“以管理员身份运行”以确保安装过程中拥有足够的权限。

二、无法连接到SQLServer在使用SQLServer时,可能会遇到无法连接到数据库的问题。

这可能是由于网络配置、服务未启动或防火墙设置等原因引起的。

以下是解决此问题的一些常见方法:1.检查网络配置:确保网络连接正常,数据库服务器所在的IP地址、端口号、实例名等配置信息正确。

2.确保SQLServer服务已启动:在Windows服务中,找到SQL Server服务并确认其状态为“运行中”。

3.检查防火墙设置:确保防火墙未阻止数据库连接请求,可在防火墙设置中配置允许使用的端口。

三、数据库文件损坏有时,在使用SQLServer时,数据库文件可能会损坏,导致无法正常读取或写入数据。

以下是一些解决此问题的方法:1.运行数据库维护工具:SQLServer提供了一些内置的维护工具,如SQL Server Management Studio,可用于修复损坏的数据库文件。

2.还原备份文件:如果有可用的备份文件,可以使用SQLServer的还原功能将备份文件还原到正常状态。

3.使用修复命令:SQLServer提供了一些修复命令,如DBCC CHECKDB,可用于检查和修复损坏的数据库文件。

SQLServer2012使用导入和导出向导时,用sql语句作为数据源,出现数据源类型会变。。。

SQLServer2012使用导入和导出向导时,用sql语句作为数据源,出现数据源类型会变。。。

SQLServer2012使⽤导⼊和导出向导时,⽤sql语句作为数据源,出现数据源类型会变。

⽤MS SqlServer2012进⾏数据导出时,使⽤的查询语句导出,但是出现了错误:“发现 xx个未知的列类型转换您只能保存此包“点击列查看详细错误信息时,可以看到:[源信息]源位置: 192.168.1.97源提供程序: SQLNCLI11表: [查询]列: ItemSize列类型: 203SSIS 类型: (类型未知...)映射⽂件(到 SSIS 类型): C:\Program Files (x86)\Microsoft SQL Server\110\DTS\MappingFiles\MSSQLToSSIS10.XML[⽬标信息]⽬标位置: C:\Users\Administrator\Desktop\⽕星公司_测试_发货单_201705181134.xls⽬标提供程序: Microsoft.Jet.OLEDB.4.0表: `查询`列: ItemSize列类型: VarCharSSIS 类型: Unicode 字符串 [DT_WSTR]映射⽂件(到 SSIS 类型): C:\Program Files (x86)\Microsoft SQL Server\110\DTS\MappingFiles\JetToSSIS.xml[转换步骤]转换未知...SSIS 转换⽂件: C:\Program Files (x86)\Microsoft SQL Server\110\DTS\binn\DtwTypeConversion.xml在CSDN的⼀个帖⼦中查到,⼀些信息:上⾯链接中介绍:描述当输⼊检索通过⼀个查询使⽤SQL Server导⼊和导出向导在SQL Server 2012中的数据,VARCHAR类型被公认为是“200”⽽nvarchar类型“202”。

这导致向导显⽰“审查”的数据类型的警告/错误类似于以下内容:14未知列类型转换(S)你只能拯救pack 在品论中有⼈指出,可以将你的查询语句,创建成视图,然后⽤视图导出就正常了,我没有试过。

sqlserver导出导入数据方法

sqlserver导出导入数据方法

一、导出导入SQL Server里某个数据库1.在SQL Server企业管理器里选中要转移的数据库,按鼠标右键,选所有任务->备份数据库。

2.备份选数据库-完全,目的备份到按添加按钮文件名在SQL Server服务器硬盘下输入一个自定义的备份数据库文件名(后缀一般是bak)重写选重写现有媒体最后按确定按钮。

如果生成的备份数据库文件大于1M,要用压缩工具压缩后再到Internet上传输。

3.通过FTP或者remote desktop或者pcanywhere等方法把第二步生成的备份数据库文件或者其压缩后的文件传到目的SQL Server数据库,如果有压缩要解压。

4.目的SQL Server数据库如果还没有此数据库,先创建一个新的数据库;然后选中这个新创建的数据库,按鼠标右键,选所有任务->还原数据库还原->从设备->选择设备->磁盘->添加(找到要导入的备份数据库文件名)->确定还原备份集->数据库-完全最后按确定按钮。

完全的数据库导入成功了。

(如果在已经存在的SQL Server数据库上还原数据库可能遇到有还有其它人正在使用它而恢复操做失败,可以去看->管理->当前活动->锁/对象->找到数据库下锁的进程号->到查询分析器里用kill进程号杀掉这些锁,然后再做还原)注意:如果在原有的目的SQL Server数据库上从备份文件(*.bak)还原数据库会把已经存在的表、存储过程等数据库对象全部替换成最近这次导入的备份数据库里的内容。

如果一定要还原备份文件(*.bak)里部分数据,需要另外建一个新数据库,其逻辑名称和数量同备份文件(*.bak)里数据库的逻辑名称和数量一致;新数据库的物理文件名称取得一定要和备份文件(*.bak)里数据库的物理文件不一样才行。

二、导出导入SQL Server里某个表1.没有防火墙,同一个局域网里或不在同一个局域网里,但通过Internet可以互相访问在SQL Server企业管理器里选中目的数据库,按鼠标右键,选所有任务->导入数据-> 弹出数据转换服务导入/导出向导窗口->下一步->选数据源-> 数据源(用于SQL Server的Microfost OLE DB 提供程序)->服务器(可选择局域网内能访问到的所有SQL Server服务器,或者直接输入IP地址)->选择使用windows身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->选择目的->目的(用于SQL Server的Microfost OLE DB提供程序)->服务器(默认为上一步里选中的导出服务器,也可以选其它局域网内能访问到的所有SQL Server服务器,或者直接输入IP地址)->目的数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->选择源表和视图->在要导入的表和视图前面选中源->目的出现同样的表名(可以手工修改成别的表名)->转换->列映射和转换里面可以修改源表和目的表之间字段的对应关系,修改目的表字段的类型和长度等,并可以选择创建目的表,在目的表中增加行,除去并重新创建目的表,启用标志插入等选项->确定->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出导入数据,选调度DTS包以便以后执行)->保存(可以不选)->[ 保存DTS包(如果以后还要转移这批相同的数据,可以把本次导出导入的内容和步骤保存起来,存到SQL Server即可,保存的时候要输入DTS的包名及详细描述)->下一步-> ]->完成正在执行包->图形界面显示创建表及插入记录的步骤和状态->完成2.经过防火墙,不在同一个局域网里①、导出表里的数据到文本文件:在SQL Server企业管理器里选中目的数据库,按鼠标右键,选所有任务-> 导入数据->弹出数据转换服务导入/导出向导窗口->下一步->选数据源-> 数据源(用于SQL Server的Microfost OLE DB提供程序)->服务器(可选择局域网内能访问到的所有SQL Server服务器)->选择使用windows 身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->选择目的->目的(文本文件)-> 文件名(在自己的电脑硬盘中生成一个自定义的文本文件) ->下一步->制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->选择目的文件格式->源(选择要导出的表)->用默认的带分隔符->选第一行包含有列名称选项->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出到文本文件,选调度DTS包以便以后执行)->保存(可以不选)-> [保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成正在执行包->图形界面显示表到文本文件的步骤和状态->完成如果生成的文本文件大于1M,要用压缩工具压缩后再到Internet上传输。

sql语句完成数据的导入导出

sql语句完成数据的导入导出

sql语句完成数据的导⼊导出熟悉SQL SERVER的数据库管理员都知道,其DTS可以进⾏数据的导⼊导出,其实,我们也可以使⽤Transact-SQL语句进⾏导⼊导出操作。

在 Transact-SQL语句中,我们主要使⽤OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。

利⽤下述⽅法,可以⼗分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:⼀、SQL SERVER 和ACCESS的数据导⼊导出常规的数据导⼊导出:使⽤DTS向导迁移你的Access数据到SQL Server,你可以使⽤这些步骤:○1在SQL SERVER企业管理器中的Tools(⼯具)菜单上,选择Data Transformation○2Services(数据转换服务),然后选择 czdImport Data(导⼊数据)。

○3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键⼊你的.mdb数据库(.mdb⽂件扩展名)的⽂件名或通过浏览寻找该⽂件。

○4在Choose a Destination(选择⽬标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证⽅式。

○5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。

○6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。

下⼀步,完成。

Transact-SQL语句进⾏导⼊导出:1.在SQL SERVER⾥查询access数据:SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:"DB.mdb";User ID=Admin;Password=')...表名2.将access导⼊SQL server在SQL SERVER ⾥运⾏:SELECT *INTO newtableFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:"DB.mdb";User ID=Admin;Password=' )...表名3.将SQL SERVER表⾥的数据插⼊到Access表中在SQL SERVER ⾥运⾏:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=" c:"DB.mdb";User ID=Admin;Password=')...表名(列名1,列名2)select 列名1,列名2 from sql表实例:insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:"db.mdb';'admin';'', Test)select id,name from TestINSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:"trade.mdb'; 'admin'; '', 表名)SELECT *FROM sqltablename⼆、SQL SERVER 和EXCEL的数据导⼊导出1、在SQL SERVER⾥查询Excel数据:SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:"book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]下⾯是个查询的⽰例,它通过⽤于 Jet 的 OLE DB 提供程序查询 Excel 电⼦表格。

sqlserver 数据库导出导入方法

sqlserver 数据库导出导入方法

网上例子insert intoDAY(numchnid,numsrvid,numprovid,numgwid,r_day,mo_all,mt_all,mt_valid, mt_userr,mt_sum)select v.numchnid, v.numsrvid, v.numprovid, v.numgwid,DATE(v.r_day), v.mo_all,case when w.mt_all is null then 0 else w.mt_all end,case when w.mt_valid is null then 0 else w.mt_valid end, case when w.mt_user is null then 0 else w.mt_user end,case when w.sumfee is null then 0 else w.sumfee endfrom report_tmp3 vleft join report_tmp4 won v.numchnid = w.numchnidand v.numsrvid = w.numsrvidand v.numprovid = w.numprovidand v.numgwid = w.numgwidand v.r_day = w.r_day;commit;同库导出导入数据:insert into news.dbo.Table_1(title,cid)select title, id from Article where Articleid=1跨库导出导入数据:sql语句中使用数据库连接insert into Table_1(title,cid)select ArticleClass,ArticleTitle fromOPENDATASOURCE('SQLOLEDB','Data Source=.;UserID=sa;Password=123').database1.dbo.Article(会遇到问题后面有解决方法)--查询示例select * from ITSV.数据库名.dbo.表名--导入示例select * into 表 from ITSV.数据库名.dbo.表名--以后不再使用时删除链接服务器exec sp_dropserver 'ITSV ', 'droplogins '--连接远程/局域网数据(openrowset/openquery/opendatasource)--1、openrowset--查询示例select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)--生成本地表select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)--把本地表导入远程表insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)select *from 本地表--更新本地表update bset b.列A=a.列Afrom openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 bon a.column1=b.column1--openquery用法需要创建一个连接--首先创建一个连接创建链接服务器exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '--查询select *FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')--把本地表导入远程表insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')select * from 本地表--更新本地表update bset b.列B=a.列BFROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as ainner join 本地表 b on a.列A=b.列A--3、opendatasource/openrowsetSELECT *FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta--把本地表导入远程表insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名select * from 本地表遇到的问题SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。

SQLServer连接中常见错误解决方法

SQLServer连接中常见错误解决方法

SQLServer连接中常见错误解决方法SQLServer连接中常见错误解决方法一、sqlserver不存在或访问被拒绝分析:此问题最为复杂,由于错误发生的原因比较多,所以需要检查很多方面。

一般情况下,有几种可能性:1.sql server名称或ip地址拼写有误。

2.服务器端网络配置有误。

3.客户端网络配置有误。

要解决此问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因。

首先,检查网络物理连接ping <服务器ip地址/服务器名称>假如ping<服务器ip地址>不成功,说明物理连接有问题,这时候要检查硬件设备,如网卡,hub,路由器等.。

另外还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如isaserver。

防火墙软件可能会屏蔽对ping,telnet等的响应,因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口。

如果ping<服务器ip地址>成功而,ping<服务器名称>失败则说明名字解析有问题,这时候要检查dns服务是否正常。

有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用hosts文件来进行名字解析,具体的方法是:1.使用记事本打开hosts文件(一般情况下位于c:\winnt\system32\drivers\etc)。

添加一条ip地址与服务器名称的对应记录,如:172.168.10.24 myserver2.或在sqlserver的客户端网络实用工具里面进行配置,后面会有详细说明。

其次,使用telnet命令检查sqlserver服务器工作状态telnet <服务器ip地址> 1433如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明sqlserver服务器工作正常,并且正在监听1433端口的tcp/ip 连接。

sqlserver导入数据时常出现的错误解答

sqlserver导入数据时常出现的错误解答

sqlserver导⼊数据时常出现的错误解答在做SSIS项⽬的Data Coversion时,经常会遇到类似如下两个问题:1.Validating (Error)Messages* Error 0xc02020f4: Data Flow Task 1: The column "xxxx" cannot be processed because more than one code page (936 and 1252) are specified for it.(SQL Server Import and Export Wizard)* Error 0xc02020f4: Data Flow Task 1: The column "xxxx" cannot be processed because more than one code page (936 and 1252) are specified for it.(SQL Server Import and Export Wizard)解决:检查你源数据库和⽬标数据库的排序规则是否不⼀致,如果Code Page不⼀致,就会出现⼤量上⾯错误。

2:在验证时出现下⾯错误信息- Validating (Error)Messages* Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column "xxxxx".(SQL Server Import and Export Wizard)* Error 0xc0202045: Data Flow Task 1: Column metadata validation failed.(SQL Server Import and Export Wizard)解决:出现这个错误,是因为这⼀列是⾃动增长,需要在”Edite Mappings" 选项⾥⾯勾选“Enable Identity Insert”选项。

sqlserver数据的导入导出命令

sqlserver数据的导入导出命令

sqlserver数据的导入导出命令sql server 数据的导入导出命令一、将.dbf(foxpro数据文件)导入到sql server中:-------------如果接受导入数据的SQL表不存在,导入时创建select * into 要生成的SQL表名 from openrowset('MSDASQL','Driver=Microsoft Visual F oxPro Driver;SourceType=DBF;SourceDB=c:\','select * from dbf表名.DBF')实例:--导入mdf数据文件select * into t_tdd from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=d:\我的文档\桌面\宁夏第一次数据','select * from [t_tdd.DBF]')在执行命令前,要下载了一个microsoft ole db provider for visual foxpro安装,可以了。

在使用该命令时,有时会出现如下错误提示:SQL Server 阻止了对组件'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。

系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。

有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。

SQLServer导入数据报错无法在只读列“Id”中插入数据,几百个表怎么批量启用启用标识插入选项

SQLServer导入数据报错无法在只读列“Id”中插入数据,几百个表怎么批量启用启用标识插入选项

SQLServer导⼊数据报错⽆法在只读列“Id”中插⼊数据,⼏百个表怎么批量启⽤启⽤标识插⼊选项SQL Server导⼊数据报错"⽆法在只读列“Id”中插⼊数据",⼏百个表怎么批量启⽤'启⽤标识插⼊'选项SQL Server在导⼊数据时,因为很多主键的⾃增量不允许编辑,所以会报错"⽆法在只读列“Id”中插⼊数据"。

具体错误描述:- 正在验证 (错误)消息错误 0xc0202049: 数据流任务 1: ⽆法在只读列“Id”中插⼊数据。

(SQL Server 导⼊和导出向导).......错误 0xc004706b: 数据流任务 1: “⽬标 - T_News”验证失败,返回的验证状态为“VS_ISBROKEN”。

(SQL Server 导⼊和导出向导)解决⽅法:出现该问题的原因是表中含有⾃动增长的标识列,需要再"编辑映射"中勾选"启⽤标志才插⼊"。

扩展:如果在导出数据时,有⼏百个表怎么批量启⽤'启⽤标识插⼊'选项呢?解决⽅法:可以全选或者选中多个,再去点‘编辑映射’。

建议是全选。

特别注意,这⾥的全部,不是指的前⾯的勾选,⽽是⼀⾏⾏整⾏选择;建议单击第⼀⾏,拉到最下⽅,按住Shift键再点击最后⼀⾏,这就是全选了。

-- 默认选择:复制⼀个表和多个表或视图的数据,下⼀步;-- 在[选择源表和源视图]1 -- 注意,这⾥只选表,不能选视图和存储过程(否则将都会变成表);-- [选择源表和源视图]2 -- Shift选择后,勾⼀个即可;勾选后, "编辑映射",勾选启⽤标识插⼊和删除现有⽬标表中的⾏,确定,下⼀步。

············。

SQLServer导入.CSV数据文件乱码问题多余双引号问题

SQLServer导入.CSV数据文件乱码问题多余双引号问题

SQLServer导⼊.CSV数据⽂件乱码问题多余双引号问题有时候我们需要从Excle中的数据导⼊到sql server中⽽sql server恰好没安装Excle的数据导⼊插件,这时候我们可以选择将Excle⽂件中每⼀个sheet转换成.CSV或者.TXT⽂件导⼊sql server数据库中,然⽽在导⼊过程中肯定都会遇到⼀系列问题:字符编码导致的乱码问题、导⼊数据突然多出莫名其妙的引号分号等问题,下⾯介绍⼀下导⼊过程中容易踩坑的地⽅以及其解决⽅法.1、导⼊数据中⽂乱码问题:出现中⽂乱码问题的地⽅⼀般有2个:1、数据源⽂件的编码(.CSV .TXT.........)我们⾸先需要确定的是,我们从excle中另存的数据⽂件当时是按什么编码进⾏存储的,是Unicode编码还是UTF-8编码存储的,很多⼈往往在保存的时候不注意⽂件的编码从⽽导致在导⼊数据库的时候才发现问题。

保存的时候看好时按什么字符集编码的!当然如果数据库是按照Unicode编码的我们想要从Excle导出⼀个Unicode编码的.CSV⽂件怎么办呢?解决⽅法:先将保存的.csv⽂件改成.txt⽂件然后打开它另存为,txt⽂件的另存为可以选择⽂件字符编码集,操作如下:保存完成后去数据库导⼊该.CSV⽂件2 数据库导⼊存在多余符号问题有时候我们在导出excle⽂件数据后会出现所有数据都在⼀⾏的问题例如下图这种情况这种数据在导⼊数据库的时候会出现多余分号(")问题如下情形SQL 导⼊.CSV⽂件我们会发现每⼀⾏的⾸尾都会出现⼀个多余的双引号(".............."),这种情况如何处理处理⽅案:注意这⾥如果是单⼀列出现多余分号使⽤⽂本限定符号是可⾏的,但是这种情况下不能使⽤⽂本限定符进⾏操作,我们需要将你的数据源⽂件(.CSV)转换成.txt⽂件然后⽤查找替换的⽅式将所有的双引号替换成空即可!如果是单⼀列出现这种多余的符号问题我们只需要在⽂本限定符中添加该符号即可过滤筛选!过滤完成后即可看到正常数据然后点击下⼀步,选择你要导⼊的数据库点击下⼀步完成即可成功导⼊,注意:有些数据在导⼊的时候默认类型类nvarchar(50)如果个别字段超出长度就会发⽣导⼊报错,这时候你需要在导⼊的时候设置⼀下每个字符串的最⼤长度,根据长度不宜选过⼤,也不宜过⼩。

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

1、打开本地企业管理器,先创建一个SQL Server注册来远程连接服务器端口SQL Server。

步骤如下图:图1:2、弹出窗口后输入内容。

"总是提示输入登陆名和密码"可选可不选,如图2。

图2:3、注册好服务器后,点击打开。

如果是选择了"总是提示输入登陆名和密码"的话再点了确定后会提示输入用户密码,如图3。

图3:4、进入后,选择到您的数据库,如testdb。

在上面点右键,"所有任务">>"导入数据",如图4。

图4:5、进入DTS导入/导出向导,点击“下一步”按钮继续6、选择数据源,输入数据源所在的数据库服务器名称、用户名、密码和要复制数据的源数据库,点击“下一步”按钮7、选择“在SQL Server数据库之间复制对象和数据”方式,点“下一步”继续图7:8、这一步可以把"包括扩展属性"和"排序规则"两个选择上。

接着去掉左下的"使用默认选项",点击右下角的"选项"来进行配置。

图8:9、图8中点"选项"后会弹出图9,把"复制数据库用户和数据库角色"与"复制对象级权限"两个选项去掉,点确定回到图8接着点"下一步"进到图10。

10、设定调度方式,一般选“立即运行”就可以,然后点“下一步”继续11、点"完成"开始执行。

图11:12、正在进行数据导入中图12:13、如果一切正常,提示成功复制如图13,那就大功告成了。

图13:如果提示导入失败,出现图14情况,这时不要急着点"完成"关闭窗口。

双击中间的"出现错误"会出现详细的失败原因。

图14:错误原因一、没安装SP3补丁如果是出现如图15的报错原因,那么就很有可能是因为您本机的SQL Server 还没有打SP3补丁。

图15:如何查看是否已打了SP3补丁呢?右键点击本地SQL Server属性,弹出图16窗口,查看"产品版本"一行。

像以下图显示8.00.760(SP3)说明已经打过补丁。

如果您的企业管理器显示的版本要比这个小,那就是没打 SP3 补丁。

请安装 SQL Server SP3 补丁后再重试。

图 16:错误原因二、 错误原因二、对象属性冲突 如果出现图 17 情况,那么应该就是您本地数据库的表/视图/存储过程的属主和 服务器上数据库默认用户不一致。

服务器的用户一般是:数据库名+'_f',如我的数据库名称是 testdb,则我在服 务器上使用的数据库用户名就是 testdb_f。

如图 18,我本地的表属主是 testuser,与服务器数据库用户名不一致,因此导 入过程出错。

图 17:图 18:解决方法是: 应该先把本地的所有表/视图/存储过程属主都改为 dbo 或 testdb_f(后者需要 在本地创建起相应用户。

建议创建,否则以后想从服务器上导出数据时同样会因为这个问题导出错误), 再重新进行导入/导出。

打开 SQL 查询分析器,运行以下命令进行批量修改表属主为 dbo: exec sp_MSForEachTable 'sp_changeobjectowner "?", "dbo"'运行成功后表属主会改变成如图 19:图 19:如果需要修改视图/存储过程,则麻烦了点。

下面有个方法可以实现: 一、先在 master 创建一个 sp_MSforeachObject 存储过程,命令如下: USE MASTERGOCREATE proc sp_MSforeachObject@objectType int=1,@command1 nvarchar(2000),@replacechar nchar(1) = N'?',@command2 nvarchar(2000) = null,@command3 nvarchar(2000) = null,@whereand nvarchar(2000) = null,@precommand nvarchar(2000) = null,@postcommand nvarchar(2000) = nullas/* This proc returns one or more rows for each table (optionally, matching @where), with each table defaulting to itsown result set *//* @precommand and @postcommand may be used to force a single result set via a temp table. *//* Preprocessor won't replace within quotes so have to use str(). */declare @mscat nvarchar(12)select @mscat = ltrim(str(convert(int, 0x0002)))if (@precommand is not null)exec(@precommand)/* Defined@isobject for save object type */Declare @isobject varchar(256)select @isobject= case @objectType when 1 then 'IsUserTable'when 2 then 'IsView'when 3 then 'IsTrigger'when 4 then 'IsProcedure'when 5 then 'IsDefault'when 6 then 'IsForeignKey'when 7 then 'IsScalarFunction'when 8 then 'IsInlineFunction'when 9 then 'IsPrimaryKey'when 10 then 'IsExtendedProc'when 11 then 'IsReplProc'when 12 then 'IsRule'end/* Create the select *//* Use @isobject variable isstead of IsUserTable string */EXEC(N'declare hCForEach cursor global for select ''['' + REPLACE(user_name(uid), N'']'', N'']]'') + '']'' + ''.'' + ''['' +REPLACE(object_name(id), N'']'', N'']]'') + '']'' from dbo.sysobjects o '+ N' where OBJECTPROPERTY(o.id, N'''+@isobject+''') = 1 '+N' and o.category > ' + @mscat + N' = 0 '+ @whereand)declare @retval intselect @retval = @@errorif (@retval = 0)exec @retval = sp_MSforeach_worker @command1, @replacechar, @command2, @command3if (@retval = 0 and @postcommand is not null)exec(@postcommand)return @retvalGO二、再运行以下命令批量修改表、触发器、视图、存储过程的属主(需要先在 master 创建 sp_MSforeachObject 存储过程) EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=1EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=2EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=3EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=4此时再重新进行导入应该就能一切顺利了。

相关文档
最新文档