今天第一天使用DB2,遇到些问题

 由于刚接到一份需求,是处理几张报表(好无聊啊,是公司经理交待下来的,分析了一下只能自己做了。。。我都几年没写java的东东了).数据库源要从多个文本文件、sql server数据库中取,最后数据要在db2中处理,而且,最终数据还会移到informix下(好烦,不过没办法,这不是一个公司做的,要整合啊)。本文主要是围绕这几个问题展开。

1.昨晚装好db2就回家了,今天上班后开始找它的驱动,后来才发现db2 8.1已经装了jdbc驱动,需要配置一下就可以了。

在控制中心里点了点,简单看了看它。试着导入文本文件,|分隔的,不行...先放着吧....
进入命令行工具,db2>
connect to SAMPLE user db2admin using admin;
连接到sample库,不成功!删除分号,成功..原来不能加分号啊,是oralce/mysql/informix用习惯了?奇怪的是控制中心中生成的sql也有分号啊?

CONNECT RESET 关闭连接,建个测试库吧:
db2 => create db test
DB20000I  CREATE DATABASE 命令成功完成。
create table test(name character(50),age integer)
 insert,select都成功,真幸运!
转到控制中心去建了表,select出错,网上查了查,才知道是原来是模式的问题,改为
select * from db2admin.test 执行成功,其中db2admin是表所对应的模式名

2.导入导出数据
我比较关心的是导入,在控制中心中试了几次,不成功。网上查...后来终于成功了:

load from d:/test.txt of del modified by coldel| insert into test
load from d:/test.txt of del modified by coldel| insert into test(name,age)
load from d:/test.txt of del modified by coldel| method  p (1, 2) MESSAGES D:/bl_acc.log insert into test(name,age)
把上面的load换成import报错。不知道import导入的话,该怎么用?不管了,我能完成工作就OK。
导出数据我试了试,也有问题,
EXPORT TO C:/1.txt OF DEL MODIFIED BY COLDEL| MESSAGES t SELECT * FROM DB2ADMIN.TEST;出错!

想了想导出以后再说,先测试jdbc吧

3.测试jdbc连接
把dbjcc.jar和db2java.jar复制到了tomcat的common/lib目录下,使用下面的jsp测试,OK!

<%@page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>
<html>
<body>  从db2数据库读取的数据:
<hr>
<table border=1 bordercolor=black>
<%
  String driver = "com.ibm.db2.jcc.DB2Driver"; //大小写,cpp/jcc
  String url = "jdbc:db2://localhost:50000/jmreport";
  String user = "db2admin";
  String password = "admin";
  Class.forName(driver);
  Connection con = DriverManager.getConnection(url, user, password);
  Statement stmt = con.createStatement();
  ResultSet rst = stmt.executeQuery("select * from test");
  while (rst.next()) {
    out.println("<tr>");
    out.println("<td>" + rst.getString("name") + "</td>");
    out.println("<td>" + rst.getString("age") + "</td>");
    out.println("</tr>");
  }
  //关闭连接
  rst.close();
  stmt.close();
  con.close();
%>
</table>
</body>
</html>

再用一个控制台程序测试,顺便给它加了个参数,以实现db2数据表导出到文件。因为以后可能会用到。

import java.sql.*;

/*
 db2数据表导出工具
 usage:
 java DB2Test jmreport @
 java DB2Test jmreport "|"
 why 20060725
 */

public class DB2Test {
  public static void main(String[] args) {
//String driver = "COM.ibm.db2.jdbc.app.DB2Driver";
//String url = "jdbc:db2:jmreport";
    if (args.length == 0 || args.length == 1) {
      System.out.println("Command Line Error!/nUsage:/njava DB2Test jmreport @/njava DB2Test jmreport /"|/"");
      System.exit(1);
    }

    String driver = "com.ibm.db2.jcc.DB2Driver"; //大小写,cpp/jcc
    String url = "jdbc:db2://localhost:50000/" + args[0];
    String user = "db2admin";
    String password = "admin";

    try {
      Class.forName(driver);
      Connection conn = DriverManager.getConnection(url, user, password);
//System.out.println (url);
      if (!conn.isClosed()) {
        ; //System.out.println("数据库连接成功!");
      }

      Statement stmt = conn.createStatement();
      String strSql = "select * from test";
      ResultSet rs = stmt.executeQuery(strSql);
      while (rs.next()) {
        System.out.print(rs.getString(1).trim());
        System.out.print(args[1]);
        System.out.print(rs.getString(2).trim());
        System.out.println();
      }

      conn.close();
    }
    catch (ClassNotFoundException e) {
      System.out.println("找不到驱动程序");
      e.printStackTrace();
    }
    catch (SQLException e) {
      e.printStackTrace();
    }
  }
}
最后,可能用:java DB2Test jmreport "|" 或java DB2Test jmreport  # 这样的命令来导出数据表,比从控制中心导应该方便快捷一点:)


不知道怎么回事,我配置了半天程序也找不到db2java.zip里的驱动,改成jar文件也不行,故而上面都使用的是jcc的方式连接的DB2

写了这么多,不知道对别人有没有用,就当工作日记吧。明天要写存储过程,写shell、服务程序来导入、同步数据什么的了,但愿不要跟其它数据库区别太大啊....



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值