• linux中mysql,mongodb,redis,hbase数据库操作


    1.实验内容与完成情况:(实验具体步骤和实验截图说明)
    (一) MySQL 数据库操作
    学生表 Student
    Name     English     Math     Computer
    
    zhangsan     69     86     77
    lisi     55     100     88
    
    根据上面给出的 Student 表,在 MySQL 数据库中完成如下操作:
    (1)在 MySQL 中创建 Student 表,并录入数据;
    (2)用 SQL 语句输出 Student 表中的所有记录;
    (3)查询 zhangsan 的 Computer 成绩;
    (4)修改 lisi 的 Math 成绩, 改为 95
    
    根据上面已经设计出的 Student 表,使用 MySQL 的 JAVA 客户端编程实现以下操作:
    1)向 Student 表中添加如下所示的一条记录:
    scofield     45     89     100
    
    源代码:
    package com.mysql;
    
    import java.sql.*;
    
    public class MysqlTest {
       static final String driver="com.mysql.jdbc.Driver";
       static final String DB="jdbc:mysql://localhost/test1";
       static final String user="root";
       static final String password="wangli";
       public static void main(String[] args) {
           Connection conn=null;
           Statement stmt=null;
           try {
               Class.forName(driver);
               conn=DriverManager.getConnection(DB,user,password);
               stmt=conn.createStatement();
               String sql="insert into Student values('scofied',45,89,100)";
               stmt.executeUpdate(sql);
               System.out.println("插入成功!");
           
           } catch (SQLException | ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            if(stmt!=null) {
                
                    try {
                        stmt.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    
                
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
           
           
           
       }
    }
    
    
    2) 获取 scofield 的 English 成绩信息
    源代码:
    package com.mysql;
    
    import java.sql.*;
    
    public class MysqlTest {
       static final String driver="com.mysql.jdbc.Driver";
       static final String DB="jdbc:mysql://localhost/test1";
       static final String user="root";
       static final String password="wangli";
       public static void main(String[] args) {
           Connection conn=null;
           Statement stmt=null;
           ResultSet rs=null;
           try {
               Class.forName(driver);
               conn=DriverManager.getConnection(DB,user,password);
               stmt=conn.createStatement();
               String sql="select Name,English from Student where Name='scofied' ";
    
               rs=stmt.executeQuery(sql);
               System.out.println("name"+"		"+"English");
               while(rs.next()) {
                   System.out.print(rs.getString(1)+"		");
                   System.out.println(rs.getString(2));
               }
               System.out.println("输出完成!");
           
           } catch (SQLException | ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            if(stmt!=null) {
                
                    try {
                        stmt.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    
                
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }       
       }
    }
    (二) HBase 数据库操作
    学生表 Student
    name     score
    English     Math     Computer
    zhangsan     69     86     77
    lisi     55     100     88
    
    根据上面给出的学生表 Student 的信息, 执行如下操作:
    (1) 用 Hbase Shell 命令创建学生表 Student;
    (2)用 scan 命令浏览 Student 表的相关信息;
    (3)查询 zhangsan 的 Computer 成绩;
    (4)修改 lisi 的 Math 成绩, 改为 95
    2.根据上面已经设计出的 Student 表, 用 HBase API 编程实现以下操作:
    1)添加数据: English:45 Math:89 Computer:100
    scofield     45     89     100
    
    源代码:
    package hbase_test;
    import java.io.IOException;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.TableName;
    import org.apache.hadoop.hbase.client.Admin;
    import org.apache.hadoop.hbase.client.Connection;
    import org.apache.hadoop.hbase.client.ConnectionFactory;
    import org.apache.hadoop.hbase.client.Put;
    import org.apache.hadoop.hbase.client.Table;
    
    public class HBaseTest {
        public static Configuration configuration;
        public static Connection connection;
        public static Admin admin;
    
        public static void main(String[] args) {
            configuration=HBaseConfiguration.create();
            configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
            try {
                connection=ConnectionFactory.createConnection(configuration);
                admin=connection.getAdmin();
                insertRow("Student","scofield","score","English","45");
                insertRow("Student","scofield","score","Math","89");
                insertRow("Student","scofield","score","Computer","100");
                System.out.println("插入成功!");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            close();
        }
    
        public static void insertRow(String tableName, String rowKey, String colFamily, String col, String val) {
            try {
                Table table = connection.getTable(TableName.valueOf(tableName));
                Put put = new Put(rowKey.getBytes());
                put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes());
                table.put(put);
                table.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        public static void close() {
    
            try {
                if (admin != null) {
                    admin.close();
                }
                if(null!=connection) {
                    connection.close();
                }    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }
    2)获取 scofield 的 English 成绩信息。
    源代码:
    package hbase_test;
    
    import java.io.IOException;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.Cell;
    import org.apache.hadoop.hbase.CellUtil;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.TableName;
    import org.apache.hadoop.hbase.client.Admin;
    import org.apache.hadoop.hbase.client.Connection;
    import org.apache.hadoop.hbase.client.ConnectionFactory;
    import org.apache.hadoop.hbase.client.Get;
    import org.apache.hadoop.hbase.client.Put;
    import org.apache.hadoop.hbase.client.Result;
    import org.apache.hadoop.hbase.client.Table;
    
    public class HBaseTest2 {
        public static Configuration configuration;
        public static Connection connection;
        public static Admin admin;
    
        public static void main(String[] args) {
            configuration=HBaseConfiguration.create();
            configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
            try {
                connection=ConnectionFactory.createConnection(configuration);
                admin=connection.getAdmin();
                getData("Student","scofield","score","English");
                System.out.println("输出完成!");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            close();
        }
    
        public static void getData(String tableName, String rowKey, String colFamily, String col) {
            try {
                Table table = connection.getTable(TableName.valueOf(tableName));
                Get get=new Get(rowKey.getBytes());
                get.addColumn(colFamily.getBytes(), col.getBytes());
                Result result=table.get(get);
                showCell(result);
                table.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        private static void showCell(Result result) {
            Cell[] cells=result.rawCells();
            for(Cell cell:cells) {
                System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+"     ");
                System.out.println("Timetamp:"+cell.getTimestamp()+"     ");
                System.out.println("column Family"+new String(CellUtil.cloneFamily(cell))+"     ");
                System.out.println("row Name:"+new String(CellUtil.cloneValue(cell))+"     ");
                System.out.println("value"+new String(CellUtil.cloneValue(cell))+"     ");
                
            }
            
        }
    
        public static void close() {
    
            try {
                if (admin != null) {
                    admin.close();
                }
                if(null!=connection) {
                    connection.close();
                }    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
    }
    
    (三) Redis 数据库操作
    Student 键值对如下:
    zhangsan:{
    English: 69
    Math: 86
    Computer: 77
    }
    lisi:{
    English: 55
    Math: 100
    Computer: 881. 根据上面给出的键值对, 完成如下操作:
    (1)用 Redis 的哈希结构设计出学生表 Student (键值可以用 student.zhangsan 和 student.lisi来表示两个键值属于同一个表);
    (2) 用 hgetall 命令分别输出 zhangsan 和 lisi 的成绩信息;
    (3) 用 hget 命令查询 zhangsan 的 Computer 成绩;
    (4)修改 lisi 的 Math 成绩, 改为 95
    2.根据上面已经设计出的学生表 Student, 用 Redis 的 JAVA 客户端编程(jedis),实现如下
    操作:
    (1)添加数据: English:45 Math:89 Computer:100
    该数据对应的键值对形式如下:
    scofield:{
    English: 45
    Math: 89
    Computer: 100
    (四) MongoDB 数据库操作
    Student 文档如下:
    {
    “name”: “zhangsan”,
    “score”: {
    “English”: 69,
    “Math”: 86,
    “Computer”: 77
    } } {
    “name”: “lisi”,
    “score”: {
    “English”: 55,
    “Math”: 100,
    “Computer”: 88
    } }
    
    1.根据上面给出的文档,完成如下操作:
    (1) 用 MongoDB Shell 设计出 student 集合;
    (3)用 find()方法输出两个学生的信息;
    (4)用 find()方法查询 zhangsan 的所有成绩(只显示 score 列);
    (4)修改 lisi 的 Math 成绩, 改为 95
    2.根据上面已经设计出的 Student 集合,用 MongoDB 的 Java 客户端编程,实现如下操作:
    1) 添加数据: English:45 Math:89 Computer:100
    
    与上述数据对应的文档形式如下:
    {
    “name”: “scofield”,
    “score”: {
    “English”: 45,
    “Math”: 89,
    “Computer”: 100
    } }
    
    源代码:
    package com.mongo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bson.Document;
    
    import com.mongodb.MongoClient;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    
    public class MongoTest {
        public static void main(String[] args) {
            MongoClient mongoClient=new MongoClient("localhost",27017);
            MongoDatabase mongoDatabase=mongoClient.getDatabase("student");
            MongoCollection<Document> collection=mongoDatabase.getCollection("student");
            Document document=new Document("name","scofield").append("score", 
                    new Document("English",45).append("Math", 89).append("Computer",
                            100));
            List<Document> documents=new ArrayList<Document>();
            documents.add(document);
            collection.insertMany(documents);
            System.out.println("文档插入成功!");
        }
    
    }
    实验截图:
    
    
    
    2)获取 scofield 的所有成绩成绩信息(只显示 score 列) 
    源代码:
    
    package com.mongo;
    
    import org.bson.Document;
    
    import com.mongodb.MongoClient;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoCursor;
    import com.mongodb.client.MongoDatabase;
    
    public class MongoTest2 {
    
        public static void main(String[] args) {
            MongoClient mongoClient=new MongoClient("localhost",27017);
            MongoDatabase mongoDatabase=mongoClient.getDatabase("student");
            MongoCollection<Document> collection=mongoDatabase.getCollection("student");
            MongoCursor<Document> cursor=collection.find(new Document("name","scofield")).
                    projection(new Document("score",1).append("_id", 0)).iterator();
            while(cursor.hasNext())
                System.out.println(cursor.next().toJson());
        }
    }
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    问题记录之spring-mvc.xml配置文件报错
    问题记录之用poi生成图片并插入到word时,图片中的中文显示不出来
    问题记录之每次打开vmware的时候都会跳出xftp的安装程序问题解决
    DataTable和List之间互转
    .NET[C#]中实现实体对象深拷贝(克隆/复制)的几种方法
    SQL Server表分区详解(转)
    vs2017使用GitHub插件发布项目到github
    jquery autocomplete 在IE11中出现打开网页输入框有默认值时下拉列表是已经打开的状态解决
    MVC DropDownLis 二级联动实现
    sql 查询某个表在哪些存储过程(SP)中使用到
  • 原文地址:https://www.cnblogs.com/wl2017/p/10294390.html
Copyright © 2020-2023  润新知