访问数据仓库

最近更新时间:2019-05-14 15:19:52

默认情况下仅支持同一 VPC 子网下的 CVM 服务器对 Snova 数据仓库集群进行访问;如需支持公网直接访问数据仓库集群,请申请 外网地址

您在创建好数据仓库集群,开始使用数据库服务前,需要使用数据库客户端连接到数据库。请参考以下指导,使用 psql 客户端工具连接数据库。

  1. 获取集群访问地址:通过集群 JDBC URL 中的 IP 和端口连接数据库。
  2. 连接到集群数据库:安装客户端并连接集群数据库。

前提条件

  1. 已获取 Snova 集群的数据库管理员密码。数据库管理员密码为开始创建集群时设置的管理员账号密码。
  2. 已获取创建好的 Snova 集群的访问 IP 和端口以及 VPC 和子网。

获取集群访问地址和本地网络

登录 Snova 控制台,选择对应的集群,详细信息如图所示,获取 VPC 网络:vpc-aejsd98p,子网:subnet-83knqldq。链接 Snova 的 IP 为10.0.6.10,端口为5432,登录帐户为 lambuser。

命令行连接到集群数据库

在获取的 VPC 网络:vpc-aejsd98p,子网: subnet-83knqldq 中选择一台 CVM 服务器(如果不存在,则购买一台即可)。登录该服务器,执行以下命令,即可安装 PostgreSQL 客户端。

yum install -y postgresql.x86_64

执行下面的 SQL 命令,然后输入创建集群时输入的密码,即可登录成功。

psqlh10.0.6.10p5432dpostgresUlambuser

JDBC 连接数据库

需要获取 PostgresSQL 官方提供的 JDBC,下载地址

或者在 pom.xml 文件中添加如下配置:

<dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.2</version>
        </dependency>
</dependencies>

示例代码

package com.qcloud.snova_conn;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import com.yammer.metrics.core.Meter;

public class SnovaConn {
    /*
     * args: vip vport user pwd
     */
    public static void main(String[] args) throws ClassNotFoundException, SQLException {

            if (args.length < 4){
                 System.out.println("args err");
                 return;
            }

            String vip =  args[0];
            String vport =  args[1];
            String userName =  args[2];
            String userPwd =  args[3];

            System.out.printf("vip:%s, vport:%s, userName:%s, userPwd:%s\n",vip, vport, userName, userPwd);
            String jdbcUrl = "jdbc:postgresql://" + vip+":"+vport+"/maxluo";
            System.out.printf("jdbcUrl:%s \n",jdbcUrl);

            Class.forName("org.postgresql.Driver");  
            Connection snova = DriverManager.getConnection(jdbcUrl,userName,userPwd);  
            Statement st = snova.createStatement();  
            ResultSet rs = st.executeQuery("select * from test;");  
            while (rs.next()) {  
                System.out.print(rs.getString(1));  
                System.out.print("\n");  
            }  
            rs.close();  
            st.close(); 


    }

}

pom.xml 配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.qcloud</groupId>
  <artifactId>snova-conn</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>snova-conn</name>
  <url>http://maven.apache.org</url>

  <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

  <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.40</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>6.4.0.jre8</version>
        </dependency>
        <dependency>
            <groupId>com.yammer.metrics</groupId>
            <artifactId>metrics-core</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.9</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                    <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    </configuration>
                <executions>
                    <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                    <goal>single</goal>
                    </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>*.properties</exclude>
                        <exclude>*.xml</exclude>
                        <exclude>*.json</exclude>
                        <exclude>*.sh</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <type>jar</type>
                            <includeTypes>jar</includeTypes>
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

然后采用 Maven 打包生成 jar 文件,并把该 jar 包上传至 CVM 服务器(该 Snova 集群所在 VPC 子网中的任意一台 CVM 均可)。

执行以下命令安装 jdk。

yum install java

执行命令:

javacp  snova-conn-0.0.1-SNAPSHOT-jar-with-dependencies.jar  com.qcloud.snova_conn.SnovaConn  10.0.8.5  5436   lambuser  lambpwd11

注意:

VIP 和端口分别为 Snova 集群链接地址,用户名和密码分别是创建集群时填写的信息,具体获取方式见前文。

通过命令行方式建立数据库和数据表,并插入一定量的数据。

查询结果如下,可以读取到事先建立的数据库 maxluo 中表 test 中的数据: