精华内容
下载资源
问答
  • 如下:根据上述文件内容,创建一个t1 create table t1( id int ,name string ,hobby array ,add map,string> ) row format delimited fields terminated by ',' collection items terminated by '-' map ...
    版权声明:本文为博主原创文章,欢迎转载,转载请注明出处! https://blog.csdn.net/qq_36743482/article/details/78383964

    注:hive其他语法在hive官网有说明,建议初学者,去官网学习一手的资料,
    官网:https://cwiki.apache.org/confluence/display/Hive/Home#Home-UserDocumentation

    Create Table

    官网说明

    Hive建表方式共有三种:

    • 直接建表法
    • 查询建表法
    • like建表法

    首先看官网介绍
    ’[]’ 表示可选,’|’ 表示二选一

    CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
      [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
      [COMMENT table_comment]
      [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
      [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
      [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
         ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
         [STORED AS DIRECTORIES]
      [
       [ROW FORMAT row_format] 
       [STORED AS file_format]
         | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
      ]
      [LOCATION hdfs_path]
      [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
    

    [AS select_statement]; – (Note: Available in Hive 0.5.0 and later; not supported for external tables)

    CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
    LIKE existing_table_or_view_name
    [LOCATION hdfs_path];

    data_type
    primitive_type
    | array_type
    | map_type
    | struct_type
    | union_type – (Note: Available in Hive 0.7.0 and later)
    primitive_type
    TINYINT
    | SMALLINT
    | INT
    | BIGINT
    | BOOLEAN
    | FLOAT
    | DOUBLE
    | DOUBLE PRECISION – (Note: Available in Hive 2.2.0 and later)
    | STRING
    | BINARY – (Note: Available in Hive 0.8.0 and later)
    | TIMESTAMP – (Note: Available in Hive 0.8.0 and later)
    | DECIMAL – (Note: Available in Hive 0.11.0 and later)
    | DECIMAL(precision, scale) – (Note: Available in Hive 0.13.0 and later)
    | DATE – (Note: Available in Hive 0.12.0 and later)
    | VARCHAR – (Note: Available in Hive 0.12.0 and later)
    | CHAR – (Note: Available in Hive 0.13.0 and later)
    array_type
    ARRAY < data_type >
    map_type
    MAP < primitive_type, data_type >
    struct_type
    STRUCT < col_name : data_type [COMMENT col_comment], …>
    union_type
    UNIONTYPE < data_type, data_type, … > – (Note: Available in Hive 0.7.0 and later)
    row_format
    DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
    [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
    [NULL DEFINED AS char] – (Note: Available in Hive 0.13 and later)
    | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, …)]
    file_format:
    SEQUENCEFILE
    | TEXTFILE – (Default, depending on hive.default.fileformat configuration)
    | RCFILE – (Note: Available in Hive 0.6.0 and later)
    | ORC – (Note: Available in Hive 0.11.0 and later)
    | PARQUET – (Note: Available in Hive 0.13.0 and later)
    | AVRO – (Note: Available in Hive 0.14.0 and later)
    | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
    constraint_specification:
    [, PRIMARY KEY (col_name, …) DISABLE NOVALIDATE ]
    [, CONSTRAINT constraint_name FOREIGN KEY (col_name, …) REFERENCES table_name(col_name, …) DISABLE NOVALIDATE
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81

    观察可发现一共有三种建表方式,接下来我们将一一讲解。

    1.直接建表法:

    create table table_name(col_name data_type);
    
     
    • 1

    这里我们针对里面的一些不同于关系型数据库的地方进行说明。

    row format

    row_format
      : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
            [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
            [NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)
      | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
    

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Hive将HDFS上的文件映射成表结构,通过分隔符来区分列(比如’,’ ‘;’ or ‘^’ 等),row format就是用于指定序列化和反序列化的规则。
    比如对于以下记录:

    1,xiaoming,book-TV-code,beijing:chaoyang-shagnhai:pudong
    2,lilei,book-code,nanjing:jiangning-taiwan:taibei
    3,lihua,music-book,heilongjiang:haerbin
    
     
    • 1
    • 2
    • 3

    逗号用于分割列,即FIELDS TERMINATED BY char,分割为如下列 IDnamehobby(该字段是数组形式,通过 ‘-’ 进行分割,即COLLECTION ITEMS TERMINATED BY ‘-’)、address(该字段是键值对形式map,通过 ‘:’ 分割键值,即 MAP KEYS TERMINATED BY ‘:’);
    而FIELDS TERMINATED BY char用于区分不同条的数据,默认是换行符;

    file format(HDFS文件存放的格式)

    默认TEXTFILE,即文本格式,可以直接打开。

    如下:根据上述文件内容,创建一个表t1

    create table t1(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    ;
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这里写图片描述
    2. 查看表的描述:desc t1;
    这里写图片描述

    1. 下面插入数据
      注:一般很少用insert (不是insert overwrite)语句,因为就算就算插入一条数据,也会调用MapReduce,这里我们选择Load Data的方式。
    LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
    
     
    • 1

    创建一个文件粘贴上述记录,并上载即可,如下图:
    这里写图片描述
    然后上载

    load data local inpath '/home/hadoop/Desktop/data' overwrite into table t1;
    
     
    • 1

    别忘记写文件名/data,笔者第一次忘记写,把整个Desktop上传了,一查全是null和乱码。。。。
    查看表内容:

    select * from t1;
    
     
    • 1

    这里写图片描述

    external

    未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);
    区别:
    内部表数据由Hive自身管理,外部表数据由HDFS管理;
    内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定;
    删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
    对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

    创建一个外部表t2

    create external table t2(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    location '/user/t2'
    ;
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这里写图片描述

    装载数据
    load data local inpath '/home/hadoop/Desktop/data' overwrite into table t2;
    
     
    • 1

    这里写图片描述

    查看文件位置

    如下图,我们在NameNode:50070/explorer.html#/user/目录下,可以看到t2文件
    这里写图片描述

    t1在哪呢?在我们之前配置的默认路径里
    这里写图片描述

    同样我们可以通过命令行获得两者的位置信息:

    desc formatted table_name;
    
     
    • 1

    这里写图片描述

    这里写图片描述
    注:图中managed table就是内部表,而external table就是外部表。

    分别删除内部表和外部表

    下面分别删除内部表和外部表,查看区别
    这里写图片描述

    观察HDFS上的文件

    发现t1已经不存在了
    这里写图片描述

    但是t2仍然存在
    这里写图片描述
    因而外部表仅仅删除元数据

    重新创建外部表t2
    create external table t2(
        id      int
       ,name    string
       ,hobby   array<string>
       ,add     map<String,string>
    )
    row format delimited
    fields terminated by ','
    collection items terminated by '-'
    map keys terminated by ':'
    location '/user/t2'
    ;
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    这里写图片描述

    不往里面插入数据,我们select * 看看结果
    这里写图片描述
    可见数据仍然在!!!

    官网说明
    A table created without the EXTERNAL clause is called a managed table because Hive manages its data. 
    Managed and External Tables
    By default Hive creates managed tables, where files, metadata and statistics are managed by internal Hive processes. A managed table is stored under the hive.metastore.warehouse.dir path property, by default in a folder path similar to /apps/hive/warehouse/databasename.db/tablename/. The default location can be overridden by the location property during table creation. If a managed table or partition is dropped, the data and metadata associated with that table or partition are deleted. If the PURGE option is not specified, the data is moved to a trash folder for a defined duration.
    Use managed tables when Hive should manage the lifecycle of the table, or when generating temporary tables.
    An external table describes the metadata / schema on external files. External table files can be accessed and managed by processes outside of Hive. External tables can access data stored in sources such as Azure Storage Volumes (ASV) or remote HDFS locations. If the structure or partitioning of an external table is changed, an MSCK REPAIR TABLE table_name statement can be used to refresh metadata information.
    Use external tables when files are already present or in remote locations, and the files should remain even if the table is dropped.
    Managed or external tables can be identified using the DESCRIBE FORMATTED table_name command, which will display either MANAGED_TABLE or EXTERNAL_TABLE depending on table type.
    Statistics can be managed on internal and external tables and partitions for query optimization. 
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.查询建表法

    通过AS 查询语句完成建表:将子查询的结果存在新表里,有数据
    一般用于中间表

    CREATE TABLE new_key_value_store
       ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"
       STORED AS RCFile
       AS
    SELECT (key % 1024) new_key, concat(key, value) key_value_pair
    FROM key_value_store
    SORT BY new_key, key_value_pair;
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    根据例子我们建一张表:t3

    create table t3 as
    select
        id
       ,name
    from t2
    ;
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    会执行MapReduce过程。
    查看表结构及内容,发现是有数据的,并且由于没有指定外部表和location,该表在默认位置,即是内部表。
    这里写图片描述

    3.like建表法

    会创建结构完全相同的表,但是没有数据。
    常用语中间表

    CREATE TABLE empty_key_value_store
    LIKE key_value_store;
    
     
    • 1
    • 2

    例子

    create table t4 like t2;
    
     
    • 1

    可以发现,不会执行MapReduce,且表结构和t2完全一样,但是没有数据。
    这里写图片描述

            </div>
    					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-2787195726.css" rel="stylesheet">
                </div>
    
    展开全文
  • mysql 之as 与 like创建表之差异

    千次阅读 2016-05-23 10:02:38
    对于MySQL的复制相同结构方法,有create table as 和create table like 两种,区别是什么呢?...as创建出来的t2(新)缺少t1(源)的索引信息,只有结构相同,没有索引。  create tabl

    对于MySQL的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢?

        create table t2 as select * from t1 where 1=2 ; 或者 limit 0;

    as创建出来的t2表(新表)缺少t1表(源表)的索引信息,只有表结构相同,没有索引。

        create table t2 like t1 ;

    like 创建出来的新表包含源表的完整表结构和索引信息

    二者的用途:

        as用来创建相同表结构并复制源表数据

        like用来创建完整表结构和全部索引


    oracle支持as,也是只有表结构没有索引;oracle不支持like。


    同时,还发现like创建的表是没数据的。。。


    同时自己的一个突然的想法,插入数据到like出来的表(说明t1是存在数据的,id,name id自增),做了如下测试

    1,这种写法是可行的

    create table tmp3 like t1

    insert into tmp3 values (null,'aa');

    2,连起来就报错了

    insert into (create table tmp3 like t1) values (null,'aa');

    展开全文
  • Hive创建表的方式(默认路径/user/hive/warehouse,也可以location指定,主要针对external表)  1、使用create命令创建一个新表,带分区 CREATE TABLE `FDM_SOR.mytest_deptaddr`( `dept_no` int, `addr` ...

    Hive创建表的方式(默认路径/user/hive/warehouse,也可以location指定,主要针对external表)  

    1、使用create命令创建一个新表,带分区

    CREATE  TABLE `FDM_SOR.mytest_deptaddr`(  
          `dept_no` int,   
          `addr` string,   
          `tel` string)
        partitioned by(statis_date string ) 
        ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 

    可以使用describe formatted mytest_deptaddr 查看建表相关的各种配置属性以及默认属性。在创建表时有很多属性,比如存储地址,存储格式等属性我们都没有直接配置,而是选择了系统默认的。

    2、把一张表的某些字段抽取出来,创建成一张新表,使用as

    create table mytest_tmp1 
            as   
           select *  from FDM_SOR.mytest_deptaddr where statis_date='20180229';

    注意:

    1.as只会复制属性以及属性值到新的表中

    2.使用as创建的表,并不会带原表的分区(分区丢失),包扣一些字段的约束等(可以通过describe formatted查看)

    3.新表中会将原表的分区当做字段出现在新表中。

    3、复制表结构,使用like创建表

    create table mytest_tmp like FDM_SOR.mytest_deptaddr;

     注意:不会复制表中属性值,只会复制表结构(包扣表的分区以及存储格式之类的,区别as)

    展开全文
  • like关键字的使用 这里我们建一张与goods结构相同的且命名为...模型: create table 新表名 like 已存在的 举例 : create table minigoods like goods; insert into minigoods select * from goods limit 3...

    like关键字的使用

    这里我们建一张与goods表结构相同的且命名为minigoods, 同时使用limit,给新表中插入旧表的部分数据。

    • 模型: create table 新表名 like 已存在的表
    • 举例 : create table minigoods like goods; insert into minigoods select * from goods limit 3;
    • 如图所示在这里插入图片描述
    展开全文
  • 标题SQL中创建相同时as 和like的区别 1.MySQL的复制相同结构方法: 1)create table table_name as select * from table1 where 1=2 (或者limit 0); 2) create table table_name like table1_name; 二者的...
  • 细说 MySQL 创建表的三种方法

    千次阅读 2021-08-15 21:38:02
    MySQL 则实现了三种创建表的方法,支持自定义表结构或者通过复制已有的表结构(CREATE TABLE ... LIKE 以及 CREATE TABLE ... SELECT)来创建新表,本文给大家分别介绍一下这些方法的使用和注意事项。
  • 最基本的创建表的方式 create table 表名( 列名1 数据类型, 列名2 数据类型, … ) 例如:(设置id为int型,非空,主键,自增) CREATE TABLE test3 ( id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, name ...
  • postgreSQL从已有表创建表

    千次阅读 2019-05-16 08:15:19
    创建一个结构一样的 create table b(like tablea including all) 创建一个结构一样,并插入已有的数据 create table b as select * from tablea
  • DB2的create table like

    千次阅读 2013-10-15 09:14:25
    DB2中可以使用 create table a like b 这样的语句来创建一个 结构和 b 相同的 a  但是这里要求 b必须的一个单,    这里有一需求: a有字段a1,a2,a3,b有字段b1,b2,b3,我想在数据库里生成c,c含a1,...
  • SpringBoot 结婚mybatisplus 进行数据操作出现的问题1. 插入中文乱码问题?jdbc:mysql://127.0.0.1:3306/xxx?useSSL=false&amp;zeroDateTimeBehavior=convertToNull&amp;characterEncoding=utf8... like 关...
  • MySQL利用现有的数据表创建

    千次阅读 2019-11-26 15:25:08
    MySQL利用现有的数据表创建 MySQL使用create table可以创建数据,该命令通过为指定字段并设置字段的数据类型,也可以设置主键、外键、unique约束、索引、默认值、自增等特性。 使用create table命令除了可以...
  • hive中创建表的三种方式

    千次阅读 2019-07-09 21:00:16
    (1)创建外部:删除后数据删除,元数据还在 create EXTERNAL table 名称(字段信息) ROW FORMAT DELIMITED FIELDS TERMINATED BY '字段之间分割符' LINES TERMINATED BY '\n' (2)创建管理:删除后数据...
  • 关于PostgreSQL实现动态复制的全过程~
  • Hive创建表常见的命令

    千次阅读 2018-11-28 09:41:57
    1、创建 create table student_hive (name string, sex string ,age int) row format delimited fields terminated by '\t'; 2、导入数据student_hive.txt到student_hive load data local '/home/hairui/...
  • ·数据库创建及查询 文章目录学习笔记任务过程第一步:分析需求第二步:新建数据库第三步:新建1.Grade2.Student3.subject第三步:插入数据1.Grade2.Student3.subject第四步:查询测试1.查询学号...
  • 文章目录一、VS的开发环境二、创建C#窗体应用程序三、创建控制台应用程序四、创建Web 一、VS的开发环境 首先你得安装了vs2019,然后确认下下面三个组件是否存在,如果没有要下载一下。vs2019的安装可参考visual ...
  • hive创建表定义的3种方式

    千次阅读 2018-06-20 19:37:16
    hive创建表定义的3种方式(1)、方式一 通过 create......as........selectCREATE TABLE default.weblog_comm AS select ip, time, req_url from default.weblog; (2)、方式二 通过like 进行hive复制表结构CREATE ...
  • Mysql修改引擎

    千次阅读 2018-03-15 11:38:22
    前言 最近在SpringBoot中采用JpaRepository以及Transactional进行数据库事务操作,结果发现数据库中的表并...经过检查发现代码并没有错误,于是想到可能采用JpaRepository自动创建表时创建的表引擎为MyISAM,而M...
  • ORACLE数据库除了可以保存永久外,还可以建立临时temporary tables。这些临时用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时...
  • GreenPlum中各种创建方式

    千次阅读 2018-08-02 13:49:42
    GreenPlum创建 最近在研究Pivotal的GreenPlum数据库,贴上来一些建表的语法: Create by zhaodj on 2018-08-01 PM,转载请注明出处 heap drop table if exists t01; create table t01(id int ...
  • 【学习环境】:sql server 2012【学习内容】:使用sql语句进行库与创建【涉及知识点】:一、数据库的创建 在Sql server 2012中,分为界面操作和代码语句操作,界面操作在后续说明,今天所记为Sql语句的操作 ...
  • Hive(6):创建表的四种方式

    千次阅读 2018-11-06 08:12:45
    在特定需求下,使用不同的创建表方式,创建需要的表。 二、创建方法 1、普通创建 create table student2( num int, name string ) row format delimited fields terminated by'\t'; 2.子查询方式(抽取源表的...
  • Hive数据库创建表创建、加载数据

    千次阅读 2017-03-08 10:51:46
    原文地址:... --创建数据库 create database if not exists sopdm comment ‘this is test database’ with dbproperties(‘creator’=’gxw’,’date’=’2014-11-12’) --数据库键值对属性信息 l
  • Hive的hql是基于sql而来,而sql中关于创建有几种方式。同样,hive也支持这些创建方式。 官网文档关于建表的地址:hive常见建表方式官网文档 1.自主创业方式create table 使用create table从无到有,...
  • 使用create table …as备份建表语句 CREATE TABLE dc_ods.miu_company_member_acct_itme_info_ods ( acctitemid STRING, memberid STRING, acct_type_code STRING, total_amount DECIMAL(10,0), freeze_...
  • MySQL 复制LIKE 和 SELECT方法)

    千次阅读 2019-05-13 18:07:17
    1、假如有两张结构一样的,表名分别为 tableA 和 tableB, tableA 里边有数据, tableB 里边没有数据,将 tableA 中的数据复制到 tableB 中。 INSERT INTO tableB SELECT * FROM tableA 2、如果不存在...
  • 建表前如何判断是否存在呢,因为table是不支持replace的。下面的sql能帮到你。create前先判断是否存在。例如,如果存在则drop掉那个。当然你也可以定义自己的操作。 declare v_cnt Number; begin select ...
  • MySQL创建表

    千次阅读 2018-09-19 18:59:06
    show variables like 'character_set_client';#查询字符集 show databases;#列出所有的服务器上的数据库alter create database if not exists test;#创建一个数据库 drop database fk;#删除数据库 show tables from ...
  • SQLite3创建表及操作

    千次阅读 2018-11-05 21:27:00
    SQLite创建表 SQLite 的CREATE TABLE语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。 语法 CREATE TABLE 语句的基本语法如下: CREATE TABLE database_name....
  • MYSQL创建数据库、创建用户、创建表

    万次阅读 2018-09-25 16:59:32
    1、创建数据库 1、创建数据库 CREATE DATABASE db_test DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 注:mysql用户无法直接通过create database创建数据库 (创建时会报错:Access denied for user 'username...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 471,458
精华内容 188,583
关键字:

like创建表