CentOS7安装和测试mssql-tools的bcp大数据导出


前言

我司要进行大量数据抽取的场景主要是SQL Server到GreenPlum,已知GP的GPLOAD可以高效加载数据到GP,那么SQL Server有没有什么高效导出数据的工具呢?到微软的SQL文档里面查了一下,果然找到了一个叫‘大容量复制实用工具(bcp)’的东东,那么来动手试试吧!

安装

我的服务器是用的CentOS7,因此按照官方文档中‘在 RHEL 8 上安装工具’部分操作:

下载存储库配置文件:

#下载存储库配置文件到yum源
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/msprod.repo

1595829900927

删除之前安装过的mssql-tools:

yum remove mssql-tools unixODBC-utf16-devel

1595830036065

运行以下命令,以使用 unixODBC 开发人员包安装 mssql-tools:

yum install mssql-tools unixODBC-devel

1595830133843

安装后,可以看到/opt下有了一个mssql-tools的目录,我们需要的bcp在/opt/mssql-tools/bin/目录下面:

1595830253509

最后我们添加环境变量,使bcp工具可以方便使用:

#修改环境变量文件
vi /etc/profile

添加如下图所示的两行:

1595830461740

然后使用以下命令刷新环境变量使其生效:

source /etc/profile

在任意路径输入bcp,看看环境变量是否配置成功:

1595830659374

测试

bcp支持许多参数,我们测试需求是从网络上一台SQL Server服务器导出某张大数据表到本地txt文件,命令格式如下:

bcp [数据库名].[架构名].[表名] [模式in|out] [文件路径全名] -S [服务器地址/实例名] -U [数据库用户] -P [数据库用户密码] -c

用同一局域网100W行2列的一个数据表试了下,耗时13.57s,平均每秒7W3行,果然够快:

1595831322805

1595831355518

第二次用了一个局域网967.8W行30列的数据表试了下,耗时186s,平均每秒5.1W行,还是相当不错的:

1595831577896

接下来想法是将将bcp导出的数据直接往linux管道写,然后让GPload直接从管道读取并加载到GreenPlum数仓,敬请期待!


文章作者: 无咎
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 无咎 !
评论
 上一篇
ContOS7安装Python3&替换DataX的pPthon2脚本为Python3脚本 ContOS7安装Python3&替换DataX的pPthon2脚本为Python3脚本
前言DataX用了3个Python脚本来启动调度,官方版本是依赖Python2的,但是Python2已经不维护升级,刚写了个解析DataX日志的脚本也是用Python3,上次部署DataX-Web的时候发现已经有人用Python3重写了Da
2020-09-25
下一篇 
DataX管理系统datax-web安装部署记录 DataX管理系统datax-web安装部署记录
前言DataX是阿里巴巴的一款开源ETL工具,但是他是纯代码操作的,并不方便小白使用。有大神基于DataX开发了一款datax-web的开源管理系统,可以通过web端配置自动生成DataX的job.json,且可以管理和监控DataX的调度
2020-07-21
  目录