Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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
Sql 是否在配置单元中创建列与另一个表相同的表?_Sql_Hadoop_Hive - Fatal编程技术网

Sql 是否在配置单元中创建列与另一个表相同的表?

Sql 是否在配置单元中创建列与另一个表相同的表?,sql,hadoop,hive,Sql,Hadoop,Hive,我想从配置单元中另一个表的某些元数据创建表。我在用蜂箱 我从问题中了解到,可以通过sql中的信息_SCHEMA.COLUMNS从表中检索metatdata: 配置单元是否具有类似的表元数据访问权限,以允许我使用另一个表的列创建表?本质上,我是在复制一个没有所有元组的表 这是迄今为止我拥有的最好的东西: 创建表从信息_SCHEMA.COLUMNS中选择行格式由“|”分隔的字段 您可以尝试CTAS语法: 您可以像这样使用新表来获取结构而不是数据 我相信这会奏效: DROP TABLE IF EXIS

我想从配置单元中另一个表的某些元数据创建表。我在用蜂箱

我从问题中了解到,可以通过sql中的信息_SCHEMA.COLUMNS从表中检索metatdata:

配置单元是否具有类似的表元数据访问权限,以允许我使用另一个表的列创建表?本质上,我是在复制一个没有所有元组的表

这是迄今为止我拥有的最好的东西:

创建表从信息_SCHEMA.COLUMNS中选择行格式由“|”分隔的字段

您可以尝试CTAS语法:

您可以像这样使用新表来获取结构而不是数据


我相信这会奏效:

DROP TABLE IF EXISTS schema.New_Table;    
CREATE TABLE New_Table    
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\034' LINES TERMINATED BY '\012'
STORED AS TEXTFILE location '/IC/New_Table'   
AS   
select *   
from Old_Table;

“\034”是做什么的?它指定了分隔符。”\034'是'\x1c'的serde代码,我相信。我想如果你把那部分去掉,它就会默认为默认的熟食。如果不想引入任何数据,请添加where 1=2。运行以下命令以查看旧的_表使用了什么。显示创建表格旧表格。这将显示旧表用作分隔符的内容,您也可以对新表使用这些分隔符。此外,为了防止遍历每条记录,请执行以下操作:选择*from old_table limit 1;但对于大数据来说,这要慢一些,对吗?它仍然必须在每一行中运行。@因此,请看1=2的位置。它总是错误的,所以得到的是空表,但我认为sql不会这样计算它。我想它仍然会检查每一行。@那么你试过了吗?查询优化器聪明的地方在于它不应该遍历所有行。检查一下执行情况plan@Sother演示给你们看执行计划:不可能在哪里,开始相信:很好!我不知道这个存在。这应该是正确的答案。它要简洁得多。
CREATE TABLE yourtable
LIKE table2;
DROP TABLE IF EXISTS schema.New_Table;    
CREATE TABLE New_Table    
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\034' LINES TERMINATED BY '\012'
STORED AS TEXTFILE location '/IC/New_Table'   
AS   
select *   
from Old_Table;