SQLServer备份还原命令Sqlcmd,osql,iSql使用:
http://lzh166.iteye.com/blog/1123995
SQL Server BCP使用小结:
http://www.cnblogs.com/qanholas/archive/2011/07/05/2098616.html
上面的文章已将有相关命令的使用,我们这边文章主要解决表记录数比较大的情况,比如300万记录,生成SQL脚本文件大小1.6G,用SQL Server Management Studio无法执行文件太大,用navicat跑脚本out of memery,用editPlus编辑,file too large,用UltrEdit编辑,速度慢,想用SQLDumpSplitter分割Sql文件,无效,真实愚蠢的想法。所以只能使用命令了。
1、SQLCMD
SQLCMD 允许在Windows命令窗中通过命令行提示符运行脚本.
语法如下:
C:\Users\donald>sqlcmd -?
Microsoft (R) SQL Server 命令行工具
版本 10.50.1600.1 NT x64
版权所有 (c) Microsoft Corporation。保留所有权利。
用法: Sqlcmd [-U 登录 ID] [-P 密码]
[-S 服务器] [-H 主机名] [-E 可信连接]
[-N 加密连接][-C 信任服务器证书]
[-d 使用数据库名称] [-l 登录超时值] [-t 查询超时值]
[-h 标题] [-s 列分隔符] [-w 屏幕宽度]
[-a 数据包大小] [-e 回显输入] [-I 允许带引号的标识符]
[-c 命令结束] [-L[c] 列出服务器[清除输出]]
[-q "命令行查询"] [-Q "命令行查询" 并退出]
[-m 错误级别] [-V 严重级别] [-W 删除尾随空格]
[-u unicode 输出] [-r[0|1] 发送到 stderr 的消息]
[-i 输入文件] [-o 输出文件] [-z 新密码]
[-f <代码页> | i:<代码页>[,o:<代码页>]] [-Z 新建密码并退出]
[-k[1|2] 删除[替换]控制字符]
[-y 可变长度类型显示宽度]
[-Y 固定长度类型显示宽度]
[-p[1] 打印统计信息[冒号格式]]
[-R 使用客户端区域设置]
[-b 出错时中止批处理]
[-v 变量 = "值"...] [-A 专用管理连接]
[-X[1] 禁用命令、启动脚本、环境变量[并退出]]
[-x 禁用变量替换]
[-? 显示语法摘要]
C:\Users\donald>
实例:
执行sql脚本(导入数据):
sqlcmd -S localhost -U sa -P 123456 -i "E:\user.sql"
导入显示sql脚本文件错误,奶奶的不行。
2.OSQL
以下是OSQL命令的参数说明:
C:\Users\donald>osql -?
Microsoft (R) SQL Server 命令行工具
版本 10.50.1600.1 NT x64
版权所有 (c) Microsoft Corporation。保留所有权利。
注意: osql 并不支持 SQL Server 2008 R2的所有功能。
请使用 sqlcmd。有关详细信息,请参阅 SQL Server 联机丛书。
用法: osql [-U 登录 ID] [-P 密码]
[-S 服务器] [-H 主机名] [-E 可信连接]
[-d 使用数据库名称] [-l 登录超时值] [-t 查询超时值]
[-h 标题] [-s 列分隔符] [-w 列宽]
[-a 数据包大小] [-e 回显输入] [-I 允许带引号的标识符]
[-L 列出服务器] [-c 命令结束] [-D ODBC DSN 名称]
[-q "命令行查询"] [-Q "命令行查询" 并退出]
[-n 删除编号方式] [-m 错误级别]
[-r 发送到 stderr 的消息] [-V 严重级别]
[-i 输入文件] [-o 输出文件]
[-p 打印统计信息] [-b 出错时中止批处理]
[-X[1] 禁用命令,[退出的同时显示警告]]
[-O 使用旧 ISQL 行为禁用下列项]
<EOF> 批处理
自动调整控制台宽度
宽消息
默认错误级别为 -1 和 1
[-? 显示语法摘要]
例子:
osql -E -i "E:\user.sql"
这个导入时间过长,小一点的表可以导入成功,执行过程中遇到如下错误:
对象名 'dbo.test' 无效:
http://blog.csdn.net/zhangfy1015/article/details/51690316
3.BCP不利用格式化文件的导入导出命令,用于处理大表数据
C:\Users\donald>bcp -?
usage: bcp [[database_name.]owner.]table_name[:slice_number] {in | out} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
[-F firstrow] [-L lastrow] [-b batchsize]
[-n] [-c] [-t field_terminator] [-r row_terminator]
[-U username] [-P password] [-I interfaces_file] [-S server]
[-a display_charset] [-q datafile_charset] [-z language] [-v]
[-A packet size] [-J client character set]
[-T text or image size] [-E] [-g id_start_value] [-N] [-X]
[-M LabelName LabelValue] [-labeled]
[-K keytab_file] [-R remote_server_principal]
[-V [security_options]] [-Z security_mechanism] [-Q]
C:\Users\donald>
命令实例:
--导出
bcp test.dbo.user out E:\user.txt -c -T
--导入
bcp test.dbo.user in E:\user.txt -c -T
实战:
--导出数据
(c) 2016 Microsoft Corporation。保留所有权利。
C:\Users\donald>bcp test.dbo.user out E:\user.txt -c -T
开始复制...
已复制 2648040 行。
网络数据包大小(字节): 4096
总时钟时间(毫秒) : 25643 平均值: (每秒 105921.56 行。)
生成的txt文件只有400M左右。
--导入数据
C:\Users\donald>bcp test.dbo.user in E:\user.txt -c -T
开始复制...
..
已向 SQL Server 发送了 1000 行。总共发送了: 2643000
已向 SQL Server 发送了 1000 行。总共发送了: 2644000
已向 SQL Server 发送了 1000 行。总共发送了: 2645000
SQLState = 22003, NativeError = 0
...
Error = [Microsoft][SQL Server Native Client 10.0]数值超出范围
已向 SQL Server 发送了 1000 行。总共发送了: 2646000
已向 SQL Server 发送了 1000 行。总共发送了: 2647000
SQLState = 22001, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]字符串数据,右截断
已复制 2648040 行。
网络数据包大小(字节): 4096
总时钟时间(毫秒) : 52196 平均值: (每秒 50738.46 行。)
C:\Users\donald>
遇到如下错误
CTLIB Message: - L6/O8/S5/N3/5/0:
ct_connect(): directory service layer: internal directory control layer error: Requested server name not found.
Establishing connection failed.
解决方式:
http://blog.sina.com.cn/s/blog_5ceb51480101gs4j.html
---分析原因
我的系统中之前安装了Sybase数据库,而SQLSERVER数据库是在Sybase之后装的,
这样就导致了SQLSERVER对应的环境变量在Sybase之后了,在执行BCP命令时,
系统首先找到的BCP是Sybase的BCP,而不是SQLSERVER的。用Sybase的BCP往SQLSERVER中导数据当然会有问题。
----解决方法
在PATH环境变量中将所有涉及SQL Server的环境变量提到Sybase之前,这样就可以了。
看来windows的环境变量也有先后优先级之分,在之后的应用中得引以注意。
总结:
对于大表数据的导入与导出用BCP命令,不利用格式化文件的导入导出数据;
OSQL主要可以处理SQL脚本文件类型的数据。bcp可能会有数据丢失呀,我测试的每个表丢失了1条记录,难道是我操作错误?
分享到:
相关推荐
bcp是微软SQLServer数据库系统的命令行工具,用于进行大数据量的导入导出,该工具简单实用、效率极高,本文总结了bcp命令操作的各种设置开关功能含义和使用方法,可以为需要的用户提供有益帮助。
SQL Server的BCP(Bulk Copy Program)工具是一个强大的命令行实用程序,用于高效地导入大量数据到SQL Server数据库,或导出数据到文件。在本文中,我们将深入探讨BCP的工作原理、使用方法以及相关最佳实践,以帮助...
针对这个需求,存在一种名为“SQLServer数据库表中数据导出成SQL语句工具”的实用程序,它能够帮助我们高效地完成这项任务。这个工具通常以MHT(Multi-Part/Related)格式提供,这是一种单一文件Web页面存储格式,...
SQL Server 三种导入导出数据方式比较 在本文中,我们将详细比较 SQL Server 中的三种导入导出数据方式:使用 Transact-SQL 对数据进行处理;调用命令行工具 bcp 处理数据;使用数据转换服务(DTS)对数据进行处理...
2. **SQL Server的数据导出方式**:SQL Server提供了多种数据导出方式,如SQL Server Management Studio (SSMS) 的“任务”->“导出数据”,以及bcp命令行工具。这些方法通常用于导出整个数据库或表的数据,但不直接...
本主题主要探讨的是如何在Excel和SQL Server之间进行数据的导入与导出操作,以及相关的C#编程技术。 首先,Excel到SQL Server的导出通常用于将Excel中的数据批量导入到数据库中。这在数据分析、报表生成或者系统...
BCP 命令导入导出数据 BCP(Bulk Copy Program)是一种命令行工具,用于将数据...BCP 命令是一种强大的命令行工具,用于批量导入或导出数据到 SQL Server 数据库中。通过使用 BCP 命令,可以快速高效地处理大量数据。
简介:微软 SQL Server 数据库 SQL 语句导入导出大全,包括与其他数据库和文件的数据的导入导出。下面是 SQL Server SQL 语句导入导出大全的详细知识点。 导出到 Excel 为了将数据导出到 Excel,使用 EXEC master....
- 特点:速度快,尤其适用于大数据量的导入导出;简单易用;支持并行处理。 - 适用场景:当需要高效地处理大量数据时,例如批量导入导出操作。 #### 三、总结 在选择SQL Server中的数据导入导出方法时,应根据...
在SQL Server 2000中,数据导入导出是数据库管理的重要环节,用于在不同数据源之间移动数据。以下是一些关键知识点和方法: 1. **DTS(数据转换服务)导入导出向导**: DTS是SQL Server 2000中的一个工具,允许...
2. **BULK INSERT**:与导出时使用,也可以用于数据的快速导入,适合大数据量操作。 3. **SSIS**:对于复杂的数据整合和转换需求,SSIS提供了丰富的组件和工作流控制,可以构建灵活的数据导入流程。 4. **...
SQL Server数据库导入导出技术是数据库管理员和开发人员在整合数据、迁移数据库或进行数据备份时常用的一种功能。SQL Server提供了多种方式进行数据导入和导出,以满足不同场景的需求。下面我们将详细介绍这些方法...
这个场景下,我们有两份重要的脚本文件:`mysqlimp.bat`和`sqlserverexp.bat`,它们分别用于从SQL Server导出数据和将数据导入到MySQL。 首先,让我们了解SQL Server的数据导出过程。`sqlserverexp.bat`脚本很可能...
- BCP(Bulk Copy Program)工具:这是SQL Server提供的命令行工具,用于快速导入/导出大量数据,适合大数据量操作。 - `SELECT INTO`语句:可以在一个数据库中创建新表并从另一个数据库或查询结果中插入数据,但...
在IT领域,特别是数据库管理与开发中,导出SQL Server 2000的...通过以上详细的分析和解释,我们了解了如何使用SQL查询和BCP命令来导出SQL Server 2000的表结构,这对于数据库管理、维护和数据迁移等工作具有重要意义。
在SQL Server中,数据的导入与导出是一项重要的操作,能够帮助我们实现数据备份、迁移、分析等需求。本文将详细介绍如何利用`bcp`工具进行数据导入导出,并提供相关的命令参数及使用案例。 #### `bcp`工具介绍 `bcp...
本文将详细介绍SQLServer中用于快速恢复表级数据的方法,并对各方案的利弊进行对比说明。 首先,需要明确的是,防范措施永远比事后补救要有效得多。但在实际工作中,仍然可能出现因操作不当导致数据损坏的情况。...
6. **PowerShell**:另一种方法是使用PowerShell,它提供了丰富的SQL Server模块,可以调用SQL命令行工具(如sqlcmd或bcp)来导出数据,然后通过PowerShell脚本控制Word文档的操作。 7. **Third-party Tools**:...