mysql load into table,MySQL使用LOAD DATA导入数据及注意事项

LOAD DATA语法:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name’

[REPLACE | IGNORE]

INTO TABLE tbl_name

[CHARACTER SET charset_name]

[{FIELDS | COLUMNS}

[TERMINATED BY ‘string’]

[[OPTIONALLY] ENCLOSED BY ‘char’]

[ESCAPED BY ‘char’]

]

[LINES

[STARTING BY ‘string’]

[TERMINATED BY ‘string’]

]

[IGNORE number LINES]

[(col_name_or_user_var,…)]

[SET col_name = expr,…]

字段之间的分隔和记录(行)之间的分隔默认是/t(即Tab)和/n。但可以改变,如:

FIELDS TERMINATED BY ‘,’ –字段用,进行分隔

LINES TERMINATED BY ‘;’ –记录用; 进行分隔

另外要注意其它操作系统的换行符与windows可能不相同。

转载本站文章请注明出处:haibing.org

导入案例:

1、 要导入数据的表结构

mysql> show create table host\G

*************************** 1. row ***************************

Table: host

Create Table: CREATE TABLE `host` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`ip` varchar(15) DEFAULT NULL,

`hostname` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

2、导入数据文件

# cat host.txt

192.168.0.3,TESTDB1

192.168.0.4,TESTDB2

查看数据格式:判断是windows文件还是Linux文件

# file host.txt

host.txt: UTF-8 Unicode (with BOM) text, with CRLF line terminators

# cat -A host.txt

M-oM-;M-?192.168.0.3,TESTDB1^M$

192.168.0.4,TESTDB2

可以看出文件是UTF8格式时,并且是带有BOM。

而且是以^M为结束,所以是windows下的utf8格式,要导入前需要做处理。

转载本站文章请注明出处:haibing.org

清除BOM:

如果直接导入的话,第一个字段会有乱码。

0c2d266c51db14e547e28fc8872cea1a.png

所以导入前需先清除头部BOM

用vim打开数据文件,去除utf-8 BOM

:set nobomb

清除^M字符:

第一种方法:

dos2unix host.txt

第二种方法:

sed -i ‘s/^M//g’ host.txt

#注意:^M的输入方式是 Ctrl + v ,然后Ctrl + M

第三种方法:

#vim host.txt

:1,$ s/^M//g

^M 输入方法: ctrl+V ,ctrl+M

3、导入数据

数据文件两列以逗号为分隔符,分别对应ip和hostname字段。

load data local infile ‘/root/host.txt’ into table host fields terminated by ‘,’ (ip,hostname);

前面也可以不清除^M,只要设置好换行符即可,windows下的换行符为\r\n

load data local infile ‘/root/host.txt’ into table host fields terminated by ‘,’ lines terminated by ‘\r\n’ (ip,hostname);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值