返回首页

gbase数据、南大通用产品文档:GBase8c

更新日期:2024年09月11日

示例1:通过本地文件导入导出数据
在基于,可以使用CopyManager 接口,通过流方式,将数据库中的数据导出到本地文
件或者将本地文件导入数据库中,文件格式支持CSV、TEXT 等格式。
样例程序如下,执行时需要加载GBase 8c 的JDBC 驱动。
import java.sql.Connection; import java.sql.DriverManager; import java.io.IOException; import
java.io.FileInputStream; import java.io.FileOutputStream; import java.sql.SQLException;
import org.postgresql.copy.CopyManager; import org.postgresql.core.BaseConnection;
public class Copy{
public static void main(String[] args)
{

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
311
String urls = new String("jdbc:postgresql://localhost:15432/postgres");//数据库URL
String username =
new String("username");//用户名
String password =
new String("passwd"); //密码
String tablename = new String("migration_table"); //定义表信息
String tablename1 = new String("migration_table_1"); //定义表信息
String driver = "org.postgresql.Driver";
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(urls, username, password);
} catch (ClassNotFoundException e)
{ e.printStackTrace(System.out);
} catch (SQLException e)
{ e.printStackTrace(System.out);
}
// 将表migration_table 中数据导出到本地文件d:/data.txt
try {
copyToFile(conn, "d:/data.txt", "(SELECT * FROM migration_table)");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
//将d:/data.txt 中的数据导入到migration_table_1 中。
try {
copyFromFile(conn, "d:/data.txt", tablename1);
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
// 将表migration_table_1 中的数据导出到本地文件d:/data1.txt
try {
copyToFile(conn, "d:/data1.txt", tablename1);
} catch (SQLException e) {
// TODO Auto-generated catch block e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace();
}
}

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
312
public static void copyFromFile(Connection connection, String filePath, String tableName)
throws SQLException, IOException {
FileInputStream fileInputStream = null; try {
CopyManager copyManager = new CopyManager((BaseConnection)connection);
fileInputStream = new FileInputStream(filePath);
copyManager.copyIn("COPY " + tableName + " FROM STDIN with (" +
"DELIMITER"+"'"+ delimiter + "'" + "ENCODING " + "'" + encoding + "')",
fileInputStream);
} finally {
if (fileInputStream != null)
{ try {
fileInputStream.close();
} catch (IOException e) { e.printStackTrace();
}
}
}
}
public static void copyToFile(Connection connection, String filePath, String tableOrQuery)
throws SQLException, IOException {
FileOutputStream fileOutputStream = null;
try {
CopyManager copyManager = new CopyManager((BaseConnection)connection);
fileOutputStream = new FileOutputStream(filePath);
copyManager.copyOut("COPY " + tableOrQuery + " TO STDOUT", fileOutputStream);
} finally {
if (fileOutputStream != null) { try {
fileOutputStream.close();
} catch (IOException e)
{ e.printStackTrace();
}
}
}
}
}

查看列属性
在“对象资源管理器”中,展开具体表节点下的“列”节点,右键单击要
查看属性的列节点,再点击“属性”菜单项,如下图所示:

图 7-41 查看列属性
点击“属性”菜单项后,将弹出“列属性”对话框,如下图所示:

GBase 8a MPP Cluster 管理工具手册

- 68 -

南大通用数据技术股份有限公司

图 7-42 列属性对话框
在“列属性”对话框中,您可以看到列的各项属性。

事件(event)是在相应的时刻调用的过程式数据库对象。一个事件可调用一次,
也可周期性的启动,
它由一个特定的线程来管理的,
也就是所谓的“事件调度器”。
事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句
的时候,
触发器就启动了,
而事件是根据调度事件来启动的。
由于他们彼此相似,
所以事件也称为临时性触发器。
每条create event 语句创建一个事件。
每个事件由两个主要部分组成,第一部分是
事件调度(event schedule),表示事件何时启动以及按什么频率启动;第二部分
是事件动作(event action),这是事件启动时执行的代码,事件的动作包含一条
SQL 语句,
它可能是一个简单的INSERT 或者UPDATE 语句,
也可以是一个存储
过程或者BEGIN...END 语句块,这两种情况允许执行多条SQL。
一个事件可以是活动(打开)的或停止(关闭)的,活动意味着事件调度器检查
事件动作是否必须调用,停止意味着事件的声明存储在目录中,但调度器不会检
查它是否应该调用。在一个事件创建之后,它立即变为活动的,一个活动的事件
可以执行一次或者多次。
注意

event 目前不支持failover。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1454