Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 配置单元表未填充来自临时表的数据_Mysql_Sql_Csv_Hadoop_Hive - Fatal编程技术网

Mysql 配置单元表未填充来自临时表的数据

Mysql 配置单元表未填充来自临时表的数据,mysql,sql,csv,hadoop,hive,Mysql,Sql,Csv,Hadoop,Hive,我有一个问题,我希望有人能帮助我,我相信这是由于我的桌子是如何被分割的,但我正在努力想出一个解决办法 我创建了一个表,如下面的示例 CREATE TABLE Demo (time timestamp COMMENT 'timestamp in format yyyymmddTss:mm:hh', exampleId varchar(6) COMMENT 'example field' example2 varchar(10) COMMENT 'example field' example3 v

我有一个问题,我希望有人能帮助我,我相信这是由于我的桌子是如何被分割的,但我正在努力想出一个解决办法

我创建了一个表,如下面的示例

CREATE TABLE Demo
(time timestamp COMMENT 'timestamp in format yyyymmddTss:mm:hh', 
exampleId varchar(6) COMMENT 'example field'
example2 varchar(10) COMMENT 'example field'
example3 varchar(50) COMMENT 'example field'
example4 varchar(50) COMMENT 'example field'
)
COMMENT 'A table to demonstrate my problem'
PARTITIONED BY (TRAN_DATE DATE COMMENT 'Transaction Date') 
CLUSTERED BY (exampleId)
SORTED BY (exampleId) INTO 24 BUCKETS
stored as orc;
然后,我尝试使用如下所示的外部表将数据从CSV文件复制到表中

Drop TABLE Demo_staging

CREATE TABLE Demo_staging
(time timestamp COMMENT 'timestamp in format yyyymmddTss:mm:hh', 
 exampleId varchar(6) COMMENT 'example field'
 example2 varchar(10) COMMENT 'example field'
 example3 varchar(50) COMMENT 'example field'
 example4 varchar(50) COMMENT 'example field'
 )
 COMMENT 'The staging table to demonstrate my problem'
 row format delimited fields terminated by ',' null defined as '\001'
 STORED AS TEXTFILE 
 LOCATION '${appPath}/raw'
 tblproperties ("skip.header.line.count"="1", "skip.footer.line.count"="2");
 insert overwrite table Demo partition (TRAN_DATE = ${day}) SELECT * FROM Demo_staging;
TRAN_DATE中的值应为YYYYMMDD格式的日期格式,该格式源自字段时间,其中所有值均设置为2015-06-20T00:00:00,但我不确定TRAN_DATE应如何获得该值。${day}的值为20150620。我试着使用下面的测试来查看出现的数据,但没有成功

insert overwrite table Demo partition (to_char(time,YYYY-MM-DD) = ${day}) SELECT * FROM Demo_staging;
我可以看到数据已经出现在我的staging表中,但它并没有到达实际的表中,我只能认为分区是原因

非常感谢您的帮助


谢谢

您是否尝试过在不使用分区的情况下从暂存到实际表的干净加载,这是否如预期的那样工作?还不确定
to_char
是否有效,您可能需要尝试类似
date\u格式(time,'yyyyy-MM-dd')='${day}'
。。可能需要稍微处理一下格式。不,不幸的是,即使没有分区,数据仍然无法从暂存表中读取。您是否也尝试了我前面评论中提到的
date\u format
函数?您对此有什么结果吗?我将分区数据类型更改为int,希望这不再是一个问题