Hive 数据库相关基本语法

创建数据库:

hive> create database if not exists hive2;
OK
Time taken: 0.257 seconds
hive> drop table hive2;
OK
Time taken: 0.224 seconds

创建存在的数据库,系统会报错:

hive> create database hive2;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database hive2 already exists

避免创建重复的数据库,系统报错,可以使用如下的语句:

hive> create database if not exists hive2;
OK
Time taken: 0.031 seconds
删除数据库:

hive> drop databses hive2;
数据库所在目录默认是hive.metastore.warehouse.dir 指定的目录,例如:

<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
  <description>location of default database for the warehouse</description>
</property>

创建数据库时,如果不指定目录,数据将存储在 /user/hive/warehouse 这个子目录中,创建数据库时也可以指定目录,例如:

hive> create database hive2 location '/user/hive/databaseDir/';
OK
Time taken: 0.071 seconds

在hdfs中如下格式,是以 .db 结尾的
创建数据库时可以为数据库添加描述信息:

hive> create database hive3 comment 'test database comment';
OK
Time taken: 0.056 seconds
使用describe database database_name 能够查看描述语句以及数据库所在的文件目录位置:

hive> describe database hive3;
OK
db_name	comment	location	owner_name	owner_type	parameters
hives	test database comment	hdfs://localhost:9000/user/hive/warehouse/hive3.db	hadoop	USER	
Time taken: 0.033 seconds, Fetched: 1 row(s)
创建数据库时可以指定键值对信息:
hive> create database hive4 with dbproperties('creator' = 'root','date'= '2017-04-24');
OK
Time taken: 0.066 seconds
同过describe database extended database_name 语句可以查看:

hive> describe database extended hive4;
OK
db_name	comment	location	owner_name	owner_type	parameters
hive4		hdfs://localhost:9000/user/hive/warehouse/hive4.db	hadoop	USER	{date=2017-04-24, creator=root}
Time taken: 0.031 seconds, Fetched: 1 row(s)
hive 没有命令可以查看当前使用的是哪个数据库,这个很遗憾。但是可以通过设置
hive.cli.print.current.db=true 显示出当前使用的数据库。

hive> set hive.cli.print.current.db=true;
hive (default)> use hive2;
OK
Time taken: 0.024 seconds
hive (hive2)> use default;
OK
Time taken: 0.027 seconds
删除数据库HQL:

hive (default)> drop database if exists hive2;
OK
Time taken: 0.054 seconds
默认情况下,hive不允许删除非空的数据库:

hive (default)> use hive4;
OK
Time taken: 0.022 seconds
hive (hive4)> create table T1(name string,age int);
OK
Time taken: 0.15 seconds
hive (hive4)> drop database hive4;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database hive4 is not empty. One or more tables exist.)

可以在语句后加上关键字cascade关键字,这样可以让hive先删除数据库中的表,然后再删除数据库:
hive (hive4)> drop database hive4 cascade;
OK
Time taken: 2.202 seconds
提示符这里是不会自动刷新的,可以切到其他数据库,再切到hive4 的时候,将会报错:
hive (hive4)> use default;
OK
Time taken: 0.026 seconds
hive (default)> use hiv4;
FAILED: SemanticException [Error 10072]: Database does not exist: hiv4
注意:数据库删除后,对应的目录也会被删除,hive4.db 目录不存在了


`COPY` 是 PostgreSQL 数据库中用于数据导入导出的命令。它可以用来将数据从外部文件中复制到数据库表中,也可以将表中的数据导出到外部文件中。而 Hive 是基于 Hadoop 的数据仓库工具,主要用于存储、查询和分析大数据。将 PostgreSQL 数据库通过 `COPY` 命令导出的数据导入到 Hive 数据库,通常需要经过以下步骤: 1. 使用 `COPY` 命令导出数据: 在 PostgreSQL 数据库中,使用 `COPY` 命令将表中的数据导出到一个文本文件中。例如: ```sql COPY your_table TO '/path/to/output_file.csv' WITH CSV HEADER; ``` 这里假设 `your_table` 是你想要导出数据的表名,`/path/to/output_file.csv` 是文件存储路径,`WITH CSV HEADER` 指定输出格式为 CSV,并包含头部信息。 2. 准备 Hive 表结构: 根据导出的数据文件格式和内容,在 Hive 中创建相应的表结构。例如: ```sql CREATE TABLE hive_table ( column1 STRING, column2 INT, ... ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE; ``` 在这个例子中,Hive 表 `hive_table` 的列结构与导出的数据文件中的列对应,并指定了字段和行的分隔符,以便 Hive 能够正确解析 CSV 文件。 3. 将数据文件导入到 Hive 表中: 将步骤1中导出的数据文件上传到 HDFS(Hadoop Distributed File System),然后使用 Hive 的 `LOAD DATA` 命令将数据文件加载到 Hive 表中。例如: ```sql LOAD DATA INPATH '/path/to/output_file.csv' INTO TABLE hive_table; ``` 这里 `/path/to/output_file.csv` 是步骤1中导出的数据文件在 HDFS 上的路径。 通过以上步骤,你可以将 PostgreSQL 数据库中通过 `COPY` 命令导出的数据文件导入到 Hive 数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值