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 行作为标题“插入”的主要内容,如果未能解决你的问题,请参考以下文章
在postgres 9.5中插入包含json对象的数组作为行
使用 IDatareader 和 SqlBulkCopy 将 Dictionary 元素作为行插入 SQL 表
ORA-06550:第 12 行,第 9 列:PL/SQL:ORA-00936:缺少表达式 ORA-06550:第 9 行,第 5 列:PL/SQL:忽略 SQL 语句