使用bcp进行大数据量导出导入

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

 SQL Server的导出导入方式有:在SQL Server中提供了导入导出的界面操作。

-- 还没有解决的问题 
-- 1:使用BCP命令时如果导出的字段为空想替换为其它描述(比如替换成NULL)如何办?
-- 2:使用 case when 时就会出现1023字节的问题,那有没其它办法解决呢?
-- 3:使用BCP命令导出大数据量时出现错误:查询提示超过了最大目录缓冲区 1023 字节(2164 字节输入)。
-- 备注
-- 1:已经使用了Coalesce代替case when,但是还是超出字符数了。
-- 2:对以网上说的放到Temp数据库中、中间表,这些?但是数据表几十G了,还能这样?

-- 整个表导出(out)
bcp 数据库名.dbo.表名 out c:\currency.txt  - S"数据库实例"  - U"用户"  - P"密码"  -

-- 使用SQL语句导出(queryout)
bcp " select   *   from  数据库名.dbo.表名" queryout c:\currency.txt  - S 数据库实例  - U"用户"  - P"密码"  - c

-- 设置字段分隔符和行分隔符(-c -t"," -r"\n"),不想输入字段类型等请配合-c一起使用
bcp " select   *   from  数据库名.dbo.表名" queryout c:\currency.txt  - S 数据库实例  - U"用户"  - P"密码"  - - t","  - r"\n"

-- 指定每批导入数据的行数、指定服务器发出或接收的每个网络数据包的字节数(-k -b5000 -a65535)
bcp " select   *   from  数据库名.dbo.表名" queryout c:\currency.txt  - S 数据库实例  - U"用户"  - P"密码"  - - t","  - r"\n"  - - b5000  - a65535

-- 在查询分析器上执行(EXEC master..xp_cmdshell)
EXEC  master..xp_cmdshell  ' bcp "select * from 数据库名.dbo.表名" queryout c:\currency.txt -S 数据库实例 -U"用户" -P"密码" -c '

-- 把SQL语句生成一个.sql文件,然后调用
-- 注:路径的文件夹名称中间不能有空格
exec  master..xp_cmdshell  ' osql -S 数据库实例 -U 用户 -P 密码 -i     C:\cmdshellTest.sql '   

-- 将数据导入到currency表中
EXEC  master..xp_cmdshell  ' bcp 数据库名.dbo.表名 in c:\currency.txt -c -T '
-- 导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。
EXEC  master..xp_cmdshell  ' bcp 数据库名.dbo.表名 in c:\currency.txt -c -F 10 -L 13 -T '

 

在使用命令xp_cmdshell的时候需要设置权限:

/* MSsql2005 如何启用xp_cmdshell
默认情况下,sql server2005安装完后,xp_cmdshell是禁用的(可能是安全考虑),如果要使用它,可按以下步骤
*/
--  允许配置高级选项
EXEC  sp_configure  ' show advanced options ' 1
GO
--  重新配置
RECONFIGURE
GO
--  启用xp_cmdshell
EXEC  sp_configure  ' xp_cmdshell ' 1
GO
-- 重新配置
RECONFIGURE
GO

-- 执行想要的xp_cmdshell语句
Exec  xp_cmdshell  ' query user '
GO

-- 用完后,要记得将xp_cmdshell禁用(出于安全考虑)
--
 允许配置高级选项
EXEC  sp_configure  ' show advanced options ' 1
GO
--  重新配置
RECONFIGURE
GO
--  禁用xp_cmdshell
EXEC  sp_configure  ' xp_cmdshell ' 0
GO
-- 重新配置
RECONFIGURE
GO

或者使用图形界面:

 

 

参考文献

bcp 实用工具

在大容量导入期 间保留空值或使用默认值

使用格式化文件跳过表列

sql server的BCP导入导出










本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/478783,如需转载请自行联系原作者

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
9月前
|
存储 大数据
大数据数据存储的分布式文件系统的HDFS的基本使用的命令行接口的导入/导出文件
在 Hdfs 中,使用命令行接口可以方便地对数据进行操作。
50 0
|
5月前
|
SQL 分布式计算 调度
在MaxCompute中,你可以通过SQL语句来查询和导出实例的运行状态和时间等信息
在MaxCompute中,你可以通过SQL语句来查询和导出实例的运行状态和时间等信息
56 5
|
10月前
|
SQL 数据采集 分布式计算
大数据数据采集的数据迁移(同步/传输)的Sqoop之基本命令和使用的导入/导出数据
在大数据领域,数据迁移(同步/传输)也是非常重要的一环。Sqoop作为一个开源的数据迁移工具,可以帮助我们轻松地实现关系型数据库与Hadoop之间的数据迁移。本文将会对Sqoop的基本命令和使用进行详细介绍。
172 1
|
10月前
|
SQL 分布式计算 数据可视化
无需导出,Hologres加速查询MaxCompute限时5折
Hologres共享集群(湖仓加速版)提供Severless的在线查询加速服务,基于存算分离的架构,针对MaxCompute交互式分析场景,无需将数据导出,即可将查询性能提升数十倍以上。
|
存储 easyexcel Java
springboot使用EasyExcel实现excel导出千万大数据量
# 介绍 EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。 easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,
1702 0
|
数据处理 SQL
【springboot+easypoi】大数据量excel导出
上次写了一行代码解决导出导入,没看的小伙伴建议先看下《【springboot+easypoi】一行代码搞定excel导入导出》,但是实际业务中遇到一个问题,如果数据里比较大的时候,例如10w+数据一次导出,就会出现卡死情况,继续看官方文档,有大数据量...
3830 0