问题现象
时间类型数据文件中带有
AM
、
PM
,需要正常加载入库。
数据文件如下:
pst103:/home/gbase # cat time.txt
Nov 20 2016 11:30:00:123PM
Nov 20 2016 11:30:00:456AM
解决方法
指定
datetime
列的格式为
'%b %d %Y %h:%i:%s:%f%p'
(
%p
代表
AM
或者
PM
),
注意小时格式必须采用
12
小时制的
%h
,而不能
是
24
小时制的
%H
。
gbase> load data infile 'sftp://gbase:gbase@10.10.10.103//home/gbase/time.t
xt' into table t_time fields terminated by '\t' DATETIME FORMAT
'%b %d %Y %h:%i:%s:%f%p';
Query OK, 2 rows affected (Elapsed: 00:00:00.84)
Task 65781 finished, Loaded 2 records, Skipped 0 records
gbase> select * from t_time;
+----------------------------+
| c1 |
+----------------------------+
| 2016-11-20 23:30:00.123000 |
| 2016-11-20 11:30:00.456000 |
+----------------------------+
2 rows in set (Elapsed: 00:00:00.00)
如果数据文件中时间不包含毫秒,可以使用
%r
代表
12
小时制的时间(
hh:mm:ss
后
面紧跟着
AM
或者
PM
)。
/home/gbase # cat time.txt
Nov 20 2016 11:31:00PM
Nov 20 2016 11:31:00AM
gbase> load data infile 'sftp://gbase:gbase@10.10.10.103//home/gbase/time.t
xt' into table t_time fields terminated by '\t' DATETIME FORMAT
'%b %d %Y %r';
Query OK, 2 rows affected (Elapsed: 00:00:00.73)
Task 65785 finished, Loaded 2 records, Skipped 0 records
gbase> select * from t_time;
+----------------------------+
| c1 |
+----------------------------+
| 2016-11-20 23:30:00.123000 |
| 2016-11-20 11:30:00.456000 |
| 2016-11-20 23:31:00 |
| 2016-11-20 11:31:00 |
+----------------------------+
4 rows in set (Elapsed: 00:00:00.01)
数据加载入库后
12
小时制时间根据
AM
、
PM
自动转化为
24
小时制时间。