SQL 语法--表数据导入方式 | 学习笔记

简介: 快速学习 SQL语法--表数据导入方式

开发者学堂课程【大数据Impala教程SQL语法--表数据导入方式学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/722/detail/12896


SQL语法--表数据导入方式


内容介绍:

一、 load data

二、insert into values

三、insert into select


impala 当中一个表的数据导入方式,整体概括起来有4种方式,结合了传统的数据库插入表的方式以及数据仓库特有的方式。

 

一、 load data

这种方式主要是已经有一个结构化标准的文件位于 hdf 之上,然后去创建一个表结构,表面跟数据正好对应上,使用load 的命令,把这个文件加载到这个表对应的路径下就可以映射成功,这一点跟 hive 非常的类似。

例如首先创建一个表叫做 user 里面有 id name age 这三个字段,而且指定分割符之间是-t,也就是字表符。首先这个语句在这里做一个执行,打开 impala

image.png

创建好这个表之后,这个表就会位于 hdf 一个路径下,选择/user/hive/warehouse/impala.db/user 路径,就是刚才创建这个表对应的路径,接下来把这个表对应的计划文件放在这个路径下,比方说现在准备一个文件,随便找下去,在这里做一个相关的编写,本地有一个 user.txt,这里面正好有两条记录,一个1Allen18岁,2Kobe19岁,而且分隔符是-t,接下来有两种方式你可以进行操作。

image.png

第一种方式直接将 Hadoop fs -put user.txt 上传到路径下如上图,上传完之后,这一个表下面就有了一个文件,来做一个查询,输入 select *from user 这个表,结果就映射出来了。叫做直 put 进去,官方更推荐的方式是把这个数据放在任何 hdf 路径下都没关系,用 load data 命令给它加载进去就好。这个路径可能没有部分权限的,表就加载不到。

image.png

例如创建一个路径,叫做 user 下的 impala,首先把这个数据上传到路径下,复制一下,如上图。这时候刷新,在user 下的 impala 下有一个 user1.txt,接下来把这个文件加载到 impala 表当中,用 load data 命令。执行后提示加载到一个文件到文件当中,加载之后,刷新,原来的文件就没有了,说明在它底层使用 load data 加载数据的时候,是做了一个数据的 MV 移动,而不是 CP 复制。移动到表对应的路径下,user1txt 过来。这两个文件它都可以检映成功,做一个 select*查询发现两个表都出来了,这就是第一种方式 load data


二、insert into values

image.png

比较接近于传统的关系型数据库,在 hive 当中通常不建议,在 hive 当中执行插入,它底层会非常的慢,而在 impala当中你可以直接这么去做,因为它效率比较快。

如上图示例插入 insert 记录后 select 查询,张三的记录就出现。再做一个刷新,发现这里底层就多了一个文件,这个文件是一个下划线表达隐藏的文件,0大小没有任何意义。刚才这个文件当中,它速度非常快,如果把这个语句转到hive 当中去执行,很慢。这是传统关系型数据库当中非常实用多的手段,叫做 insert into values 就是说代插入的数据直接后面指定清楚。

 

三、insert into select

values 说插入表的数据来自于后面,values 指定,下面这个语法就可以解释说插入表的数据来自于后面 select 查询反馈的结果,例如创建一个表叫做 user-1.这个表当中正好只有两个字段,一个是 id int,另一个是 age int.这两个字段正好来自于刚才 user 表,再进行插入 insert into table. 去插入 user_1的时候就不再去指定 values 而指定后面的select from user 表。但是注意你插入这个表的时候,这个表它本身是有两个字段,而原来这个表单是有三个字段,所以在参数需要指定清楚字段名字,例如说 select ID 插入到第一列当中,然后再 select age 作为第二列查询到这个表当中。所以你要去保证查询返回的结果当中字段的类型、顺序个数和代插入表一致,如果不一致还会报错。执行完之后看一下,这样就完成了超语句,再去 select*from user_1,这里面就有刚才插入表的结果了,是只把 ID age 拿过来,所以说你要自己控制顺序。

刚才你是先创建表,然后再去 inselect,现在可以一步到位,直接用 create as select,就是说去建表的时候,表当中有哪些字段类型顺序都不指定,包括数序都不指定,它的所有信息全部取决于后面的查询语句。例如做一个查询,创建表,create table user_2.这个表现在不写它里面有哪些字段类型,直接 as select id name from user.最后再来看一下,后面这个查询语句将会返回两个字段,一个 ID name,返回几条记录。它原来什么类型,这也是什么类型,当然有几条数据也取决于你这后面查询反馈的结果,查询之后,再去 select*from 这个表后回车,这是在 impala 当中几种常见的数据导入方式,最终的目的就是一定要把数据放到对应的表的路径下就可以了,这样它才能解析映射成功。

相关文章
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第一篇(SQL通用语法与分类)
MySQL数据库基础第一篇(SQL通用语法与分类)
|
4月前
|
SQL 关系型数据库 MySQL
mysql sql语句删除一个库下的所有表
mysql sql语句删除一个库下的所有表
36 1
|
4月前
|
SQL PHP
thinkphp之进阶sql语法,持续更新
thinkphp之进阶sql语法,持续更新
26 0
|
2月前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
26 5
|
3月前
|
SQL 关系型数据库 数据库
sql语法
【7月更文挑战第30天】sql语法
40 12
|
2月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
131 0
|
3月前
|
SQL 监控 关系型数据库
PolarDB产品使用问题之SQL防火墙怎么拦截没有指定WHERE条件的特定表的SQL语
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
3月前
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之使用sql查询一个表的分区数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
3月前
|
SQL Java 数据库连接
mybatis动态SQL常用语法总结
MyBatis 使用 OGNL 表达式语言处理动态SQL,如 `if` 标签进行条件判断,`choose`、`when`、`otherwise` 实现多条件选择,`where`、`set` 管理SQL关键字,`trim` 提供通用修剪功能,`foreach` 遍历集合数据。`sql` 和 `include` 用于代码重用,`selectKey` 处理插入后的返回值。参数传递支持匿名、具名、列表、Map、Java Bean和JSON方式。注意SQL转义及使用合适的jdbcType映射Java类型。
72 7
|
3月前
|
SQL 数据库 索引
SQL SELECT语句的语法与查询优化技巧
SQL SELECT语句的语法与查询优化技巧
下一篇
无影云桌面