精华内容
下载资源
问答
  • sql删除表清除表数据修改表结构

    千次阅读 2016-10-25 16:51:21
    删除表(包括表结构及表数据) drop table student; 清除表数据 truncate table student; 修改表结构 1、添加一列 在student表中添加一列sname alter table student add sname varchar(30); 2、修改列 在student表...

    删除表(包括表结构及表数据)

    drop table student;

    清除表数据

    truncate table student;

    根据条件删除某一行数据

    delete from student where sname='张三'


    修改表结构

    1、添加一列

    在student表中添加一列sname

    alter table student add sname varchar(30);

    2、修改列

    在student表中修改sname为sname1

    alter table student change sname sname1 varchar(30);

    在student表中修改sname1列的类型为integer

    alter table student modify sname1 integer;

    3、删除一列

    删除表中的sname1列

    alter table student drop sname1


    展开全文
  • 文章目录官方文档概述示例大表数据的分批处理修改大表的表结构方案一 : 从表修改,主从切换方案二: pt-online-schema-change 官方文档 https://dev.mysql.com/doc/ 如果英文不好的话,可以参考 searchdoc 翻译的...


    在这里插入图片描述

    生猛干货

    带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试


    官方文档

    https://dev.mysql.com/doc/

    在这里插入图片描述

    如果英文不好的话,可以参考 searchdoc 翻译的中文版本

    http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
    在这里插入图片描述


    概述

    MySQL-获取有性能问题SQL的方法_慢查询 & 实时获取

    MySQL- SQL执行计划 & 统计SQL执行每阶段的耗时

    上面两篇文章我们知道了如何获取有问题的SQL,以及如何统计SQL每个阶段的耗时,这样我们去优化的时候就更加有针对性。

    这里我们列举几个例子,来看下如何具体的优化SQL


    示例

    大表数据的分批处理

    分批处理大表的数据,特别是主从复制的MySQL集群, 每处理一批最好留一点时间,给主从同步复制留一点时间。

    举个例子 有个大表 1千万数据,我们要修改其中的100万, 那么最好分多个批次来更新,每次5000或者1万,根据自己服务器的性能合理的调整。

    存过如下, 根据自己的业务调整。

    DELIMITER $$
    USE `artisan` $$
    DROP PROCEDURE IF EXISTS `p_delete_rows` $$
    CREATE DEFINER=`root@192.168.18.131` PROCEDURE `p_delete_rows`()
    BEGIN
    		DECLARE v_rows INT;
        SET v_rows = 1;
        WHILE  v_rows >0
    		DO 
    				DELETE FROM t_test where id >= 10000  AND  id <= 20000 LIMIT 5000;
            SELECT ROW_COUNT() INTO v_rows;
            SELECT SLEEP(5);
        END WHILE;
    END$$
    DELIMITER;
    

    修改大表的表结构

    当一个表中的数据量很大的时候,我们对表中的列的字段类型进行修改,比如改变字段的宽度时会锁表,从而影响业务。 其二 无法解决主从数据库延迟的问题

    方案一 : 从表修改,主从切换

    现在从服务器上修改,然后主从切换。 切换完以后在此修改新的从服务器。 需要主从切换


    方案二: pt-online-schema-change

    主服务器上

    Step1 : 建立一个新表,将大表的数据同步过去
    Step2: 老表上建立触发器,同步到新表
    Step3:同步后老表上弄个排它锁
    Step4: 新表重命名 ,删除老表

    可以避免主从延迟,只不过操作复杂点,好在有第三方的工具可以使用 pt-online-schema-change

    pt-online-schema-change 也是 percona-toolkit中的一个工具,如何安装percona-toolkit,请查看前面的博文 https://blog.csdn.net/yangshangwei/article/details/104146374

    pt-online-schema-change alters a table’s structure without blocking reads or
    writes
    . Specify the database and table in the DSN.


    用法

    命令行里执行如下

    pt-online-schema-change \
    -- alter="MODIFY c VARCHAR(150) NOT NULL DEFAULT '' "
    --user=xxxx --password=xxx D=数据库名, t=表名
    --charset=utf8 --execute
    
    

    – alter : 要操作的DML语句 ,上面的内容为举个例子 改变字段长度
    –user 用户
    –password
    D 数据库用户
    t 表名


    实操一下

    mysql> use artisan;
    No connection. Trying to reconnect...
    Connection id:    104
    Current database: *** NONE ***
    
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> show tables;
    +-------------------+
    | Tables_in_artisan |
    +-------------------+
    | checkTest         |
    | t_innodb          |
    | t_myisam          |
    | t_order           |
    | t_test            |
    +-------------------+
    5 rows in set (0.29 sec)
    
    mysql> desc t_order;
    +---------+-------------+------+-----+---------+-------+
    | Field   | Type        | Null | Key | Default | Extra |
    +---------+-------------+------+-----+---------+-------+
    | id      | int(11)     | YES  |     | NULL    |       |
    | product | varchar(25) | YES  |     | NULL    |       |
    +---------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    
    mysql> show create table t_order;
    +---------+------------------------------------------------------------------------------------------------------------------------------------+
    | Table   | Create Table                                                                                                                       |
    +---------+------------------------------------------------------------------------------------------------------------------------------------+
    | t_order | CREATE TABLE `t_order` (
      `id` int(11) DEFAULT NULL,
      `product` varchar(25) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
    +---------+------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> alter table t_order modify product varchar(100) not null default '' ;  ----如果用sql修改来改的话,就是上面的, 这里不要执行哈 。我们用pt-online-schema-change操作 ,用这个的话   alter table t_order 这些就不用了,只要后面的语句
    
    

    退出 mysql客户端,切换到命令行的模式

    pt-online-schema-change – alter=" modify product varchar(100) not null default ‘’ " --user=root --password=artisan D=artisan, t=t_order --charset=utf8 --execute

    [root@artisan ~]# pt-online-schema-change --alter="modify product varchar(100) not null default ''" --user=root --password=artisan D=artisan,t=t_order  --charset=utf8 --execute
    Found 1 slaves:
    artisan -> 192.168.18.132:socket
    Will check slave lag on:
    artisan -> 192.168.18.132:socket
    Replication filters are set on these hosts:
      artisan
        replicate_do_db = artisan
    Please read the --check-replication-filters documentation to learn how to solve this problem.
    [root@artisan ~]# 
    
    

    发现了从库,需要加 --nocheck-replication-filters

    
    [root@artisan ~]# pt-online-schema-change --alter="modify product varchar(100) not null default ''" --user=root --password=artisan D=artisan,t=t_order  --charset=utf8 --execute --nocheck-replication-filters 
    Found 1 slaves:
    artisan -> 192.168.18.132:socket
    Will check slave lag on:
    artisan -> 192.168.18.132:socket
    Operation, tries, wait:
      analyze_table, 10, 1
      copy_rows, 10, 0.25
      create_triggers, 10, 1
      drop_triggers, 10, 1
      swap_tables, 10, 1
      update_foreign_keys, 10, 1
    Altering `artisan`.`t_order`...
    Creating new table...
    Created new table artisan._t_order_new OK.
    Altering new table...
    Altered `artisan`.`_t_order_new` OK.
    The new table `artisan`.`_t_order_new` does not have a PRIMARY KEY or a unique index which is required for the DELETE trigger.
    Please check you have at least one UNIQUE and NOT NULLABLE index.
    2020-02-03T11:47:25 Dropping new table...
    2020-02-03T11:47:25 Dropped new table OK.
    `artisan`.`t_order` was not altered.
    [root@artisan ~]# 
    
    
    
    

    失败了。。。。 这个表建的时候没建主键 。加上后重新看下表定义

    mysql> show create table t_order;
    +---------+------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table   | Create Table                                                                                                                                         |
    +---------+------------------------------------------------------------------------------------------------------------------------------------------------------+
    | t_order | CREATE TABLE `t_order` (
      `id` int(11) NOT NULL,
      `product` varchar(25) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
    +---------+------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> 
    
    

    再次执行

    [root@artisan ~]# pt-online-schema-change --alter="modify product varchar(100) not null default ''" --user=root --password=artisan D=artisan,t=t_order  --charset=utf8 --execute --nocheck-replication-filters 
    Found 1 slaves:
    artisan -> 192.168.18.132:socket
    Will check slave lag on:
    artisan -> 192.168.18.132:socket
    Operation, tries, wait:
      analyze_table, 10, 1
      copy_rows, 10, 0.25
      create_triggers, 10, 1
      drop_triggers, 10, 1
      swap_tables, 10, 1
      update_foreign_keys, 10, 1
    Altering `artisan`.`t_order`...
    Creating new table...
    Created new table artisan._t_order_new OK.
    Altering new table...
    Altered `artisan`.`_t_order_new` OK.
    2020-02-03T11:50:12 Creating triggers...
    2020-02-03T11:50:12 Created triggers OK.
    2020-02-03T11:50:12 Copying approximately 1 rows...
    2020-02-03T11:50:12 Dropping triggers...
    2020-02-03T11:50:12 Dropped triggers OK.
    2020-02-03T11:50:12 Dropping new table...
    2020-02-03T11:50:12 Dropped new table OK.
    `artisan`.`t_order` was not altered.
    2020-02-03T11:50:12 Error copying rows from `artisan`.`t_order` to `artisan`.`_t_order_new`: DBD::mysql::db selectrow_hashref failed: Table 'artisan.t_order' doesn't exist [for Statement "EXPLAIN SELECT * FROM `artisan`.`t_order` WHERE 1=1"] at /usr/bin/pt-online-schema-change line 6002.
    [root@artisan ~]# 
    

    从库没有这个表,。。。 建下吧 。

    然后再来一次 ,

    [root@artisan ~]# pt-online-schema-change --alter="modify product varchar(100) not null default ''" --user=root --password=artisan D=artisan,t=t_order  --charset=utf8 --execute --nocheck-replication-filters 
    Found 1 slaves:
    artisan -> 192.168.18.132:socket
    Will check slave lag on:
    artisan -> 192.168.18.132:socket
    Operation, tries, wait:
      analyze_table, 10, 1
      copy_rows, 10, 0.25
      create_triggers, 10, 1
      drop_triggers, 10, 1
      swap_tables, 10, 1
      update_foreign_keys, 10, 1
    Altering `artisan`.`t_order`...
    Creating new table...
    Created new table artisan._t_order_new OK.
    Altering new table...
    Altered `artisan`.`_t_order_new` OK.
    2020-02-03T12:03:27 Creating triggers...
    2020-02-03T12:03:27 Created triggers OK.
    2020-02-03T12:03:27 Copying approximately 1 rows...
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    
    

    Replica artisan is stopped. Waiting. …

    从库同步停止了, 重启下吧,要是重启后
    在这里插入图片描述

    重新设置下同步点。

    mysql> stop slave;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> change master to master_host='192.168.18.131', master_user='artisan4syn',  master_password='artisan',  master_log_file='mysql-bin.000050',  master_logog_pos=14342;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'master_logog_pos=14342' at line 1
    mysql> change master to master_host='192.168.18.131', master_user='artisan4syn' ,master_password='artisan' ,master_log_file='mysql-bin.000050' ,master_log_pos=14342;
    Query OK, 0 rows affected, 2 warnings (0.04 sec)
    
    mysql> 
    mysql> start slave;
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> 
    
    

    再看

    [root@artisan ~]# pt-online-schema-change --alter="modify product varchar(100) not null default ''" --user=root --password=artisan D=artisan,t=t_order  --charset=utf8 --execute --nocheck-replication-filters 
    Found 1 slaves:
    artisan -> 192.168.18.132:socket
    Will check slave lag on:
    artisan -> 192.168.18.132:socket
    Operation, tries, wait:
      analyze_table, 10, 1
      copy_rows, 10, 0.25
      create_triggers, 10, 1
      drop_triggers, 10, 1
      swap_tables, 10, 1
      update_foreign_keys, 10, 1
    Altering `artisan`.`t_order`...
    Creating new table...
    Created new table artisan.__t_order_new OK.
    Altering new table...
    Altered `artisan`.`__t_order_new` OK.
    2020-02-03T12:09:13 Creating triggers...
    2020-02-03T12:09:13 Created triggers OK.
    2020-02-03T12:09:13 Copying approximately 1 rows...
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    Replica artisan is stopped.  Waiting.
    2020-02-03T12:13:40 Copied rows OK.
    2020-02-03T12:13:40 Analyzing new table...
    2020-02-03T12:13:40 Swapping tables...
    2020-02-03T12:13:40 Swapped original and new tables OK.
    2020-02-03T12:13:40 Dropping old table...
    2020-02-03T12:13:40 Dropped old table `artisan`.`_t_order_old` OK.
    2020-02-03T12:13:40 Dropping triggers...
    2020-02-03T12:13:40 Dropped triggers OK.
    Successfully altered `artisan`.`t_order`.
    [root@artisan ~]# 
    
    

    成功了。

    看下表结构的变化

    在这里插入图片描述


    搞定MySQL

    在这里插入图片描述

    展开全文
  • mysql千万级数据表结构修改

    万次阅读 2016-09-05 20:09:19
    当需要对表进行ddl操作如加索引、增删列时,数据量小时直接在线修改表结构影响不大 当表达到百万、千万数据就不能直接在线修改表结构 下面是具体的过程: 1、备份数据 select * from ih_order into outfile '/...
    当需要对表进行ddl操作如加索引、增删列时,数据量小时直接在线修改表结构影响不大
    当表达到百万、千万数据就不能直接在线修改表结构

    下面是具体的过程:
    1、备份数据
    select * from ih_order into outfile '/bak/order.txt';
    mysql> select * from ih_order into outfile 'D:/bak/order.txt';
    Query OK, 10001000 rows affected (1 min 30.18 sec)

    2、复制原表物理结构
    create table ih_order_bak like ih_order;

    3、执行表结构修改,这里是增加索引
    alter table  `ih_order_bak` add index (  `consulate` );

    4、把原表数据导入新表
    mysql> insert into ih_order_bak select * from ih_order;
    Query OK, 10001000 rows affected (6 min 10.30 sec)
    Records: 10001000  Duplicates: 0  Warnings: 0

    5、删除原表
    drop table ih_order;

    6、新表重命名原表
    rename table ih_order_bak to ih_order;


    注意:
    1、这种方法会影响业务运行,建议使用在线ddl工具:pt-online-schema-change,且在访问量少时进行
    2、大多数的alter table操作都会涉及lock-->copy to new table-->rename-->unlock的过程,锁表时间会很长,而且alter table 的process不可被kill,一旦执行就不可回退。
    在mysql5.5和之前版本,在运行的生产环境对大表(超过数百万纪录)执行alter操作是一件很困难的事情。因为将重建表和锁表,影响用户者的使用。
    从mysql5.6开始,Online DDL特性被引进。增强了很多种类的Alter Table操作避免拷贝表和锁表,在运行Alter操作的同时允许运行select,insert,update,delete语句。因此在最新版本,我们可以通过使用ALGORITHM和LOCK选项抑制文件拷贝和加锁。
    但是即使在mysql5.6,仍然有一些alter操作(增加/删除列,增加/删除主键,改变数据类型等)需要重建
    展开全文
  • Hive元数据表结构详解

    千次阅读 2018-06-14 21:59:37
    概述 我们知道Apache Hive 是构建在Apache Hadoop之上的数据仓库。有助于对大型的数据集进行读、写和管理。这也是官网介绍的第一句话,虽然简短但是却能提炼出很多东西,大家可以...Hive元数据表结构 hive-...

    概述

    我们知道Apache Hive 是构建在Apache Hadoop之上的数据仓库。有助于对大型的数据集进行读、写和管理。这也是官网介绍的第一句话,虽然简短但是却能提炼出很多东西,大家可以去细细品味下。该篇博客不做过多讲述。本文我们介绍Hive的原数据表,他默认是存储再derby中的,但是我们一般会修改会mysql。作者使用的也是mysql进行的管理。

    Hive元数据表结构

    • hive-site.xml
    <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost:3306/basic01?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    
    • 通过mysql查看basic01数据库
    show tables;
    +---------------------------+
    | Tables_in_basic01         |
    +---------------------------+
    | bucketing_cols            |
    | cds                       |
    | columns_v2                |
    | database_params           |
    | dbs                       |
    | func_ru                   |
    | funcs                     |
    | global_privs              |
    | idxs                      |
    | index_params              |
    | part_col_privs            |
    | part_col_stats            |
    | part_privs                |
    | partition_key_vals        |
    | partition_keys            |
    | partition_params          |
    | partitions                |
    | roles                     |
    | sd_params                 |
    | sds                       |
    | sequence_table            |
    | serde_params              |
    | serdes                    |
    | skewed_col_names          |
    | skewed_col_value_loc_map  |
    | skewed_string_list        |
    | skewed_string_list_values |
    | skewed_values             |
    | sort_cols                 |
    | tab_col_stats             |
    | table_params              |
    | tbl_col_privs             |
    | tbl_privs                 |
    | tbls                      |
    | version                   |
    +---------------------------+
    

    下面我们就一个一个讲解看看其中到底是什么关系。

    version(存储Hive版本的元数据表)
    VER_ID SCHEMA_VERSION VERSION_COMMENT
    ID主键 Hive版本 版本说明
    1 0.12.0 Set by MetaStore hadoop@192.168.137.130

    如果该表出现问题,根本进入不了Hive-Cli。比如该表不存在,当启动Hive-Cli时候,就会报错”Table ‘hive.version’ doesn’t exist”。

    Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)
    • select * from dbs
      该表存储Hive中所有数据库的基本信息,字段如下:
    数据库ID 数据库描述 数据库HDFS路径 数据库名 数据库所有者用户名 所有者角色
    DB_ID DESC DB_LOCATION_URI NAME OWNER_NAME OWNER_TYPE
    1 Default Hive database hdfs://192.168.137.130:9000/user/hive/warehouse default public ROLE
    6 NULL hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db hive hadoop USER
    • select * from database_params;
      该表存储数据库的相关参数,在CREATE DATABASE时候用
      WITH DBPROPERTIES (property_name=property_value, …)指定的参数。
    元数据表字段 说明 示例数据
    DB_ID 数据库ID 2
    PARAM_KEY 参数名 createdby
    PARAM_VALUE 参数值 lxw1234
    Hive表和视图相关的元数据表

    主要有TBLS、TABLE_PARAMS、TBL_PRIVS,这三张表通过TBL_ID关联。

    • select * from tbls;
      该表中存储Hive表、视图、索引表的基本信息。
    表ID 创建时间 数据库ID 上次访问时间 所有者 保留字段 序列化配置信息( 对应SDS表中的SD_ID 表名 表类型 视图的详细HQL语句 视图的原始HQL语句
    TBL_ID CREATE_TIME DB_ID LAST_ACCESS_TIME OWNER RETENTION SD_ID TBL_NAME TBL_TYPE VIEW_EXPANDED_TEXT VIEW_ORIGINAL_TEXT
    1 1519944170 6 0 hadoop 0 1 page_views MANAGED_TABLE NULL NULL
    2 1519944313 6 0 hadoop 0 2 page_views_bzip2 MANAGED_TABLE NULL NULL
    3 1519944819 6 0 hadoop 0 3 page_views_snappy MANAGED_TABLE NULL NULL
    • select * from table_params;
      该表存储表/视图的属性信息。
    表ID(对应TBLS的tbl_id) 属性名 属性值
    TBL_ID PARAM_KEY PARAM_VALUE
    1 COLUMN_STATS_ACCURATE true
    1 numFiles 1
    1 numRows 0
    1 rawDataSize 0
    1 totalSize 19014993
    1 transient_lastDdlTime 1519944212
    2 COLUMN_STATS_ACCURATE true
    2 numFiles 1
    2 numRows 100000
    2 rawDataSize 18914993
    2 totalSize 3814674
    2 transient_lastDdlTime 1519944314
    • TBL_PRIVS
      该表存储表/视图的授权信息
    Hive文件存储信息相关的元数据表

    主要涉及SDS、SD_PARAMS、SERDES、SERDE_PARAMS
    由于HDFS支持的文件格式很多,而建Hive表时候也可以指定各种文件格式,Hive在将HQL解析成MapReduce时候,需要知道去哪里,使用哪种格式去读写HDFS文件,而这些信息就保存在这几张表中。

    • select * from sds;
      文件存储的基本信息:
    存储信息ID(对应tbls表中的SD_ID ) 字段信息ID(对应column_v2 的CD_ID) 文件输入格式 是否压缩 是否以子目录存储 HDFS路径 分桶数量 文件输出格式 序列化类ID
    SD_ID CD_ID INPUT_FORMAT IS_COMPRESSED IS_STOREDASSUBDIRECTORIES LOCATION NUM_BUCKETS OUTPUT_FORMAT SERDE_ID
    1 1 org.apache.hadoop.mapred.TextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 1
    2 2 org.apache.hadoop.mapred.TextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_bzip2 -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 2
    3 3 org.apache.hadoop.mapred.TextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_snappy -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 3
    21 21 org.apache.hadoop.mapred.TextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/tt -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 21
    22 22 org.apache.hadoop.mapred.SequenceFileInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_seq -1 org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat 22
    23 23 org.apache.hadoop.hive.ql.io.RCFileInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_rcfile -1 org.apache.hadoop.hive.ql.io.RCFileOutputFormat 23
    24 24 org.apache.hadoop.hive.ql.io.orc.OrcInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_orc_zlib -1 org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat 24
    27 27 com.hadoop.mapred.DeprecatedLzoTextInputFormat hdfs://192.168.137.130:9000/user/hive/warehouse/hive.db/page_views_lzo_index -1 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat 27
    • SD_PARAMS
      该表存储Hive存储的属性信息,在创建表时候使用
      STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)指定。

    • select * from serdes;
      该表存储序列化使用的类信息

    序列化类配置ID(对应SDS的 SERDE_ID) 序列化类别名 序列化类
    SERDE_ID NAME SLIB
    1 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    2 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    3 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    21 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    22 NULL org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
    23 NULL org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe
    24 NULL org.apache.hadoop.hive.ql.io.orc.OrcSerde
    • select * from serde_params;
      该表存储序列化的一些属性、格式信息,比如:行、列分隔符
    序列化类配置ID(对应SDS的 SERDE_ID) 属性名 属性值
    SERDE_ID PARAM_KEY PARAM_VALUE
    1 field.delim
    1 serialization.format
    2 field.delim
    2 serialization.format
    3 field.delim
    3 serialization.format
    21 field.delim
    Hive表字段相关的元数据表
    • select * from columns_v2;
      表的字段信息
    字段信息ID(对应SDS 表CD_ID) 字段注释 字段名 字段类型 字段顺序
    CD_ID COMMENT COLUMN_NAME TYPE_NAME INTEGER_IDX
    1 NULL city_id string 6
    1 NULL end_user_id string 5
    1 NULL ip string 4
    1 NULL referer string 3
    1 NULL session_id string 2
    1 NULL track_time string 0
    1 NULL url string 1
    2 NULL city_id string 6
    2 NULL end_user_id string 5
    2 NULL ip string 4
    2 NULL referer string 3
    2 NULL session_id string 2
    2 NULL track_time string 0
    2 NULL url string 1
    Hive表分区相关的元数据表

    主要涉及PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

    • select * from partitions ;
      分区的基本信息
    分区ID 分区创建时间 最后一次访问时间 分区名 分区存储ID 表ID
    PART_ID CREATE_TIME LAST_ACCESS_TIME PART_NAME SD_ID TBL_ID
    1 1506226696 pt=2015-06-12 21 2
    • select * from partition_keys;
      分区的字段信息
    元数据表字段 说明 示例数据
    TBL_ID 表ID 2
    PKEY_COMMENT 分区字段说明
    PKEY_NAME 分区字段名 pt
    PKEY_TYPE 分区字段类型 string
    INTEGER_IDX 分区字段顺序 1
    • select * from partition_key_vals;
      该表存储分区字段值
    元数据表字段 说明 示例数据
    PART_ID 分区ID 2
    PART_KEY_VAL 分区字段值 2015-06-12
    INTEGER_IDX 分区字段值顺序 0
    • select * from partition_params;
      该表存储分区的属性信息。
    元数据表字段 说明 示例数据
    PART_ID 分区ID 2
    PARAM_KEY 分区属性名 numFiles、numRows、rawDataSize、totalSize、transient_lastDdlTime
    PARAM_VALUE 分区属性值 15、502195
    其他不常用的元数据表
    表明 作用
    DB_PRIVS 数据库权限信息表。通过GRANT语句对数据库授权后,将会在这里存储。
    IDXS 索引表,存储Hive索引相关的元数据
    INDEX_PARAMS 索引相关的属性信息。
    TAB_COL_STATS 表字段的统计信息。使用ANALYZE语句对表字段分析后记录在这里。
    TBL_COL_PRIVS 表字段的授权信息
    PART_PRIVS 分区的授权信息
    PART_COL_STATS 分区字段的统计信息。
    PART_COL_PRIVS 分区字段的权限信息。
    FUNCS 用户注册的函数信息
    FUNC_RU 用户注册函数的资源信息

    最后我们总结下他们之间的关系图:
    这里写图片描述

    展开全文
  • SQL Server 2012 阻止修改数据表结构

    千次阅读 2015-05-10 16:18:19
  • 更改表结构-添加、修改表字段,并保留原数据 一、仅改字段名(或字段类型) 1.创建一个 备份表。 原表:dw_table,备份表:dw_table_bf create table dw_table_bf select * from dw_table; 2.清空原表数据 truncate...
  • Mysql大数据量下更改表结构

    千次阅读 2019-09-11 09:33:36
    当大数据量下需要处理表结构的更新时,如增加字段/更改字段 例:对user表的处理 # 1.创建一个源表的复制版 CREATE TABLE user_bak # 2.将源表数据,插入到新建表中 insert into user_bak select * from user; ...
  • 空间基本命令 --创建空间 初始化大小10M 自动增长5M 最大50M create tablespace duan datafile 'F:\oracle\product\10.2.0\oradata\orcl\duan.dbf' size 10M  autoextend on next 5M maxsize 50M; --查询...
  • 数据修改表结构 PowerDesigner 16.5.0.3982 SQL Server 2000 PowerDesigner随着版本的不断升级,我自己感悟到越来越好用,操作和应用也越来越比较方便,开发数据库方面的企业管理软件 朋友们经常会遇到中途...
  • 数据表 (TABLE) 数据库实际上就是多个表组成...数据表由行(row)和列(column)组成,是一个二维的网格结构。 表中至少要有一列,可以有多行或0行,表名要唯一 表与表之间还可以存在关系。所以说MySQL是一个关系...
  • 修改表结构,数据结构都不一样了,原来的数据是不是就无效了 修改表结构,数据结构都不一样了,原来的数据是不是就无效了 修改表结构,数据结构都不一样了,原来的数据是不是就无效了
  • 可以使用 describe 语句来查看数据表结构,代码如下: describe users; 在控制台中输入上述语句后的执行结果如下所示: 修改表结构 在实际应用中,当发现某个表的结构不满足要求时,可以使用 alter table ...
  • 商品规格数据结构与商品表结构分析:1. 商品规格数据结构1.1 规格属性内容1.2 横表与数表1.3 表结构1.3.1 SpecGroup规格组1.3.2 SpecParam规格参数1.4 从面向对象的角度分析2. 商品表结构分析2.1 SPU和SKU2.2 表结构...
  • 当表数据量很大时,建立索引或者修改表结构会很慢,而且在操作的过程中,数据库甚至处于死锁状态,那么有没有其他的好的办法呢? 解决方案 create table tableB like tableA; create index idx_tableA_cA on tableB...
  • 背景信息:本文用Sqoop实现MySQL中数据向Hive数据的抽取,研究在修改MySQL中数据以及表结构对抽取结果的影响环境:cloudera VM(包含Hadoop生态各组件),并在此VM中安装MySQL初始状态:Mysql中表数据如下所示:利用...
  • 数据结构-顺序基本操作的实现(含全部代码)

    万次阅读 多人点赞 2018-09-13 22:14:57
    今天起开始编写数据结构中的各种数据结构及其算法的实现。 主要依据严蔚敏版数据结构教材以及王道数据结构考研辅导书。 今天是线性表中的顺序的实现,主要实现函数如下,读者有需要可以评论,我可以适当加几个。...
  • Hive分区表更改表结构

    千次阅读 2013-08-12 10:31:08
    Hive的分区表更改表结构后需要注意的是旧分区的结构(包括序列化参数)都是不会更改的,因此如果需要往旧分区里重新insert或者load数据覆盖掉原来的数据,需要手动去数据库里修改hive的元数据。(基于hive-0.10,序列化...
  • 1、复制表结构数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。 不过这种方法的一个最不好的地方就是新表中没有了...
  • 查看表结构  查看表结构可以用语句DESCRIBE或SHOW CREATE TABLE语句。  1、查看表的基本结构语句:  DESCRIBE 表名;  2、查看表详细结构语句:  SHOW CREATE TABLE 表名;  实例:  SHOW CREATE TABLE ...
  • 数据库:表结构数据复制实例

    千次阅读 2014-12-27 14:38:02
    方案11.1复制整个表(含数据,无主键索引):old_table--->new_tableCREATE TABLE new_table SELECT... 1.2 复制整个表结构(无数据,无主键索引):old_table--->new_tableCREATE TABLE new_table SELECT * FROM old_table wh
  • oracle复制表结构数据

    千次阅读 2016-11-13 23:51:51
     我想通过以上语句拷贝emp表结构和表数据, 结果发现只能拷贝字段和数据.  约束(主键 primary key]/外键preference / 非空not null/检查check) 和 索引index会丢失. 需要再次写sql修改补齐表结构.
  • 修改表结构 更新数据

    千次阅读 2018-07-13 15:55:06
    #######修改表结构 ##1.添加一条新的字段 alter table student add 专业 char(30); ##2.改变原有字段的数据类型 alter table course modify 学分 smallint; ##3.删除某一个字段 alter table student ...
  • 数据结构 - 顺序

    千次阅读 2020-05-30 16:55:22
    数据结构 - 顺序基本实现思想
  • 要实现的例子: 表A (a0,a1) 拥有数据100条 ...现在要将表结构修改为,A(a0,a1,a2),但是不想重新输入数据 所以,想先从旧的表中到处数据,然后导入新表,字段a2取默认值或固定值 求解决方案!!
  • hive 修改表结构

    2019-12-22 09:55:27
    hive表结构修改本期介绍hive中关于表结构修改修改表名修改字段调整字段的位置增删字段综合操作 本期介绍hive中关于表结构修改 在工作中,有时候会遇到老表的数据已经不能支持新的业务需求,若是重新创建一个表来...
  • 修改已存在数据表结构可能会遇到的问题: 0、提示 1、sql server2008 无法修改表,超时时间已到 在操作完成之前超时时 修改前提示:  “**”表  - 将定义更改保存到包含大量数据的表中可能需要很长时间。在...
  • SparkSQL之更改表结构

    千次阅读 2016-07-23 18:04:15
    本文篇幅较短,内容源于自己在使用SparkSQL时碰到的一个小问题,因为在之后的...简而言之,就是需要更改SparkSQL的表结构。出于学习的目的,做了一个简单的Demo。下面来看看这个实例。Example…… ……首先使用spar
  • 修改表名:ALTER TABLE srcRENAME TO dest;修改列名:ALTER TABLE tablename RENAME COLUMN src TO dest;...如果同时需要修改列名和数据类型,则可以先修改数据类型再来修改列名,即执行上述两条sql
  • python 连接 mysql 查询 数据表结构

    千次阅读 2018-10-21 17:24:47
    python 链接 mysql 及查询 表结构 第一步:连接到mysql数据库 import pymysql conn = pymysql.connect(host='localhost',user='root',password='1234',db='ishop1',charset=&quot;utf8&quot;) 第二步...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,016,418
精华内容 406,567
关键字:

属于修改数据表结构