SQL 查询:使用第 5 行作为标题“插入”

Posted

技术标签:

【中文标题】SQL 查询:使用第 5 行作为标题“插入”【英文标题】:SQL query: 'Insert into ' using the 5th row as a header 【发布时间】:2018-11-08 02:23:20 【问题描述】:

我是新手 APACHE HIVE 用户。

我的表 A 是这样的:

     1                     2         3          4         5
1  #filename-login data    
2  #version:1.4  
3  #id:3
4
5  Counter                 Time      State         Sum      Average
6  1                    2018-10-27   Normal        10         25.4
7  2                    2018-10-28   Sleeping      13         30.1 
8  3                    2018-10-29   Normal        15         87.4

我想使用上面的表 A 创建表 B。 首先,我想获取表 A 中除前 4 行之外的所有信息。 所以标题将是第 5 行。


INSERT INTO tableB
SELECT * FROM tableA 
WHERE rownum>4 and int(Counter)>0

这个查询对吗? 如果有人能给我有用的反馈,我将不胜感激

【问题讨论】:

TableA中的列名是什么,为什么要将表头存储在TableB中? 如果是文件头,则使用tblproperties("skip.header.line.count"="5") 属性重新创建表,如此答案:***.com/a/51960636/2700344 【参考方案1】:

在此查询中,您只需将所有内容都转换为 int 在这种情况下,您可能希望使用“未签名”来获取 int 结果,因此另一个前面有单词的值将转换为 0,因为我看到您总是有 # infront你的标题,所以这不会是任何问题

INSERT INTO tableB
SELECT * FROM tableA 
WHERE cast(username as unsigned) >0

【讨论】:

实际上我不是制作表 A 的人。问题是我有几个表,如表 A,标题从每个表的不同行开始。例如,表 AA 的表头从第 8 行开始,表 AC 的表头从第 10 行开始。但是,所有表格都将 Counter 列作为第一列,这就是我添加 int(Counter) 的原因!这有意义吗? cast(username as unsigned) 对不起,我只是做了一些谷歌,你不能将你的列类型转换为整数,这样就可以在你的 where 子句“cast(username as unsigned)”上使用它 mysql 上无符号读取为整数发现在这个线程上 ***.com/questions/12126991/…

以上是关于SQL 查询:使用第 5 行作为标题“插入”的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询表中的更新行并将其插入为新行

SQL 语句插入

在postgres 9.5中插入包含json对象的数组作为行

使用 IDatareader 和 SqlBulkCopy 将 Dictionary 元素作为行插入 SQL 表

ORA-06550:第 12 行,第 9 列:PL/SQL:ORA-00936:缺少表达式 ORA-06550:第 9 行,第 5 列:PL/SQL:忽略 SQL 语句

SQL查询行作为列[重复]