第22章数据库操作
22.1 创建数据库
Hive是一个数据库技术,该技术可以定义数据库和表用于分析结构数据。结构化数据分析的主题是以表格方式存储数据,并传递查询以对其进行分析。本章是用来描述如何创建数据库。Hive包含一个默认的数据库(default)。
22.1.1创建数据库语句
创建数据库的语句用来在Hive创建数据库。Hive中的数据库是命名空间(namespace)或表的集合。创建数据库的语法如下:
CREATEDATABASE|SCHEMA [IF NOT EXISTS] <database name>;
这里,IF NOT EXISTS是一个可选子句,它通知用户已存在具有相同名称的数据库。可以在此命令中使用SCHEMA代替DATABASE。创建一个名为userdb的数据库的语法如下:
CREATE DATABASE [IF NOT EXISTS] userdb;
”或“
CREATESCHEMA userdb;
”命令执行成功,执行命令
"
show databases;
查看已有的数据库:
22.1.2 JDBC程序
创建数据库的JDBC程序:
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveCreateDb
{
private static String driverName ="org.apache.hadoop.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException
{
// Register driver and create driver instance
Class.forName(driverName);
// get connection
Connection con = DriverManager.
getConnection("jdbc:hive://localhost:10000/default", "", "");
Statement stmt = con.createStatement();
stmt.executeQuery("CREATE DATABASE userdb");
System.out.println(“Database userdb created successfully.”);
con.close();
}
}
保存程序在文件HiveCreateDb.java中。执行如下命令进行编译和执行程序:
javac HiveCreateDb.java
java HiveCreateDb
输出:
Database userdbcreated successfully.
22.2 删除数据库
用Hive删除数据库。SCHEMA和DATABASE作用相同。
22.2.1 删除数据库语法
删除数据库的语法是删除所有表和删除数据库。语法如下:
DROPDATABASE StatementDROP (DATABASE|SCHEMA) [IF EXISTS] database_name[RESTRICT|CASCADE];
执行命令删除数据库。删除数据库userdb。"
DROP DATABASE IF EXISTS userdb;
以下查询使用CASCADE删除数据库。 这意味着在删除数据库之前删除相应的表。执行命令:"
DROP DATABASE IF EXISTS userdb CASCADE;
"或着"
DROP SCHEMA userdb;
22.2.2 JDBC程序
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveDropDb
{
private static String driverName ="org.apache.hadoop.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException
{
// Register driver and create driver instance
Class.forName(driverName);
// get connection
Connection con = DriverManager.
getConnection("jdbc:hive://localhost:10000/default", "", "");
Statement stmt = con.createStatement();
stmt.executeQuery("DROP DATABASE userdb");
System.out.println(“Drop userdb database successful.”);
con.close();
}
}
保存程序在一个HiveDropDb.java文件中。执行命令:
javac HiveDropDb.java
java HiveDropDb
输出:"Drop userdbdatabase successful."