内部表基础建表语句
内部表基础建表语句一:(默认指定文件类型为TextFile,HDFS路径为/user/hive/warehouse/库/下)
格式:
create table 表名
(
字段名1 字段类型1,
字段名2 字段类型2,
…
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘分隔符’; // 必选指定列之间的分隔符
内部表基础建表语句二:(HDFS路径为/user/hive/warehouse/库/下)
格式:
create table 表名
(
字段名1 字段类型1,
字段名2 字段类型2,
…
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘分隔符’ // 必选指定列之间的分隔符
STORED AS file_format;//可以删
概述:
STORED AS:指定具体的从HDFS获取数据的格式,格式不匹配无法获取(默认为TextFile)
内部表基础建表语句三:(HDFS路径为/user/hive/warehouse/库/下)
格式:
create table 表名
(
字段名1 字段类型1,
字段名2 字段类型2,
…
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘分隔符’ // 必选指定列之间的分隔符
STORED AS file_format //可以删
location ‘HDFS路径’;
概述:
location:表示指定hive数据在hdfs的路径, 如果路径不存在会自动创建,存在就直接绑定,不能通过hdfs路径判断是否是hive表
//路径不存在自动创建
注意:
默认情况下 删除表会把数据也删除
外部表基础建表语句
外部表external
格式:
create external table 表名
(
字段名1 字段类型1,
字段名2 字段类型2,
…
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘分隔符’ // 必选指定列之间的分隔符
STORED AS file_format
location ‘HDFS路径’;
注意:
删除外部表不会删除HDFS上的数据
加载数据
加载数据(上传到hive表)
上传数据方式1:
格式:
hadoop dfs -put linux路径 hdfs路径
上传数据方式2:(直接在hive命令行操作)
格式:
dfs -put linux路径 hdfs路径
优点:比在hadoop操作hdfs快的多
上传数据方式3:(直接在hive命令行操作)
格式:
load data inpath ‘/HDFS路径’ into 表名(自动找到hdfs的路径)
注意:对于hive来说是加载
对于HDFS来说是移动
上传数据方式4:(直接在hive命令行操作)
格式:
load data local inpath ‘/HDFS路径’ into 表名(自动找到hdfs的路径)
注意:从本地上传数据
删除
1.删除空数据库
hive>drop database db_hive2;
2.如果删除的数据库不存在,最好采用 if exists判断数据库是否存在
hive> drop database db_hive;
FAILED: SemanticException [Error 10072]: Database does not exist: db_hive
hive> drop database if exists db_hive2;
3.如果数据库不为空,可以采用cascade命令,强制删除
hive> drop database db_hive;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database db_hive is not empty. One or more tables exist.)
hive> drop database db_hive cascade;