嘿,我的配置单元表中有两列:例如:
c1 : name c2 : age
现在,在创建一个表时,我想声明另外两个列,这两个列会自动为我提供加载行时的当前日期和时间。如: John 24 26/08/2015 11:15 如何做到这一点?
John 24 26/08/2015 11:15
2guxujil1#
嘿,我找到了一个使用shell脚本的方法。方法如下:echo“$(日期+%y-%m-%d-%t”)$(wc-l/home/hive/landing/$line)$dir“>>/home/hive/recon/fileinfo.txt在这里我得到的日期没有空格。最后,我将文本文件上传到我的配置单元表中。
pkmbmrz72#
配置单元当前不支持在创建表时向任何列定义添加默认值的功能。请参阅链接以获取完整的配置单元创建表语法:配置单元创建表规范解决此问题的替代方法是将数据临时加载到临时表中,并使用insert overwrite table语句将当前日期和时间添加到主表中。下面的例子可能会有所帮助:1创建临时表
create table EmpInfoTmp(name string, age int);
2使用文件或现有表将数据插入empinfotmp表:姓名|年龄艾伦| 28苏| 32玛莎| 26三。创建一个包含最终数据的表:
create table EmpInfo(name string, age tinyint, createDate string, createTime string);
4从临时表中插入数据,并在此基础上添加默认值为当前日期和时间的列:
insert overwrite table empinfo select name, age, FROM_UNIXTIME( UNIX_TIMESTAMP(), 'dd/MM/YYYY' ), FROM_UNIXTIME( UNIX_TIMESTAMP(), 'HH:mm' ) from empinfofromfile;
5最终结果如下:姓名|年龄|创建日期|创建时间艾伦| 28 | 26/08/2015 | 03:56玛莎| 26 | 26/08/2015 | 03:56苏| 32 | 26/08/2015 | 03:56请注意,创建日期和时间值将通过在临时表中添加数据到最终表中来准确输入。
y1aodyip3#
注意:不能将超过1列设置为 CURRENT_TIMESTAMP .这边,你不能坐 CURRENT_TIMESTAMP 在一列中sql语句:
CURRENT_TIMESTAMP
CREATE TABLE IF NOT EXISTS `hive` ( `id` int(11) NOT NULL, `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `age` int(11) DEFAULT '0', `datecreated` timestamp NULL DEFAULT CURRENT_TIMESTAMP );
3条答案
按热度按时间2guxujil1#
嘿,我找到了一个使用shell脚本的方法。
方法如下:
echo“$(日期+%y-%m-%d-%t”)$(wc-l/home/hive/landing/$line)$dir“>>/home/hive/recon/fileinfo.txt
在这里我得到的日期没有空格。最后,我将文本文件上传到我的配置单元表中。
pkmbmrz72#
配置单元当前不支持在创建表时向任何列定义添加默认值的功能。请参阅链接以获取完整的配置单元创建表语法:配置单元创建表规范
解决此问题的替代方法是将数据临时加载到临时表中,并使用insert overwrite table语句将当前日期和时间添加到主表中。
下面的例子可能会有所帮助:
1创建临时表
2使用文件或现有表将数据插入empinfotmp表:
姓名|年龄
艾伦| 28
苏| 32
玛莎| 26
三。创建一个包含最终数据的表:
4从临时表中插入数据,并在此基础上添加默认值为当前日期和时间的列:
5最终结果如下:
姓名|年龄|创建日期|创建时间
艾伦| 28 | 26/08/2015 | 03:56
玛莎| 26 | 26/08/2015 | 03:56
苏| 32 | 26/08/2015 | 03:56
请注意,创建日期和时间值将通过在临时表中添加数据到最终表中来准确输入。
y1aodyip3#
注意:不能将超过1列设置为
CURRENT_TIMESTAMP
.这边,你不能坐
CURRENT_TIMESTAMP
在一列中sql语句: