数据库表导入导出

本文介绍了如何在没有TiDB客户端的情况下,利用SQLServer的bcp命令从远程服务器导出CSV格式的数据,然后通过MySQL客户端的LOAD DATA LOCAL INFILE命令在TiDB中导入的过程。重点涉及了文件编码设置和数据导入参数调整。
摘要由CSDN通过智能技术生成

问题:把SQLServer中的一张表复制到TiDB里面。

本地无法连接到服务器,所以只能通过堡垒机相连,所有操作都是通过命令行进行

从SQLServer中导出表

安装好SQL server客户端会在/opt/mssql-tools/bin/目录下有两个程序

root@a80:/# ls /opt/mssql-tools/bin/
bcp  sqlcmd

本次就用到bcp命令

root@a80:/# /opt/mssql-tools/bin/bcp {datbase.dbo.tablename} out {文件.txt} -c -S 127.0.0.1 -U 用户 -P "密码"
root@a80:/# /opt/mssql-tools/bin/bcp {datbase.dbo.tablename} out {文件.csv} -S 127.0.0.1 -U 用户 -P "密码" -t ",", -w
root@a80:/# /opt/mssql-tools/bin/bcp "select QUOTENAME(a,'\"') from tableb" queryout {文件.csv} -c -S 127.0.0.1 -U 用户 -P "密码" -t ",", -w

txt 和csv文件都可以导出,只不过csv的话要多一个 -t ”,“参数,这个是添加分隔符。
-c 和 -w 是文件编码的,如果有中文要选 -c否则中文变成乱码
使用sql queryout 可以增加导出数据的字段格式

导入到TiDB中

堡垒机只装了mysql客户端,没装tidb,所以网上很多工具没得用

mysql> LOAD DATA LOCAL INFILE '/xxx.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n';

FIELDS TERMINATED BY '\t' ENCLOSED BY ''
LINES TERMINATED BY '\n'

这三个参数不写的话就是默认这样 \t分隔 空包裹 \n 换行
ENCLOSED BY ‘’ 这种情况可能会导致字符串无端的增加空格, 影响数据准确性,所以最好用“包一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值