您的位置:首页 > 数据库 > Oracle

weka-Oracle数据库连接及以ARFF文件导出[2]

2016-06-12 15:32 871 查看
weka 在 eclipse 直接连接Oracle 取数据,需要修改weka包中的配置文件。

在使用weka包连接数据库前,我们先研究 eclipse 如何连接oracle取数据

1,eclipse 连接oracle取数据

import java.sql.*;

public class JDBCTest {

public static void main(String[] args) throws Exception{

//1.准备参数
String ip = "125.210.207.51";
String sid = "wasubi@b64>>......"; // 这里我隐藏了sid,读者可以根据自己连接数据的sid替换掉
String port = "1521";
String dbUser = "yangt";
String dbPassword = "wasu1234";
String driver = "oracle.jdbc.driver.OracleDriver";

//2.构造驱动实例
Class.forName(driver);

//3.创建连接
//连接字符串是固定的形式,oracle的形式:
String url = "jdbc:oracle:thin:@" + ip + ":" + port + ":" + sid; // 注意这里url的格式,weka将使用这种格式
System.out.println(url);
Connection conn= DriverManager.getConnection(url, dbUser, dbPassword);

//4.执行SQL语句
String sql = "select * from MONTH_KAIJI1 t where rownum<10";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);//执行sql语句

while(rs.next()){

String id = rs.getString(1);
int pwd = rs.getInt(2);
System.out.println(id+"-"+pwd);
}
rs.close();
stmt.close();
conn.close();
}
}

2,在eclipse 中使用weka包连接oracle数据取数,首先修改配置文件:

2.1,获得  String url = "jdbc:oracle:thin:@" + ip + ":" + port + ":" + sid;

   即:jdbc:oracle:thin:@125.210.207.51:1521:wasubi@b64>>......

2.2,在weka包中的--weka--experiment--databaseUtils.props.oracle文件中,jdbcURL=jdbc:oracle:thin:@server_name:1521:XE    中改为:

         jdbcURL=jdbc:oracle:thin:@125.210.207.51:1521:wasubi@b64>>............

2.3,数据类型前的#全部去掉

# string, getString() = 0;    --> nominal

改为:

   string, getString() = 0;    --> nominal

2.4,databaseUtils.props.oracle文件改名为databaseUtils.props

2.5,在eclipse 使用weka包连接oracle,代码中顺带将数据库中的数据存在了Arff格式的文件

import java.io.File;

import weka.core.Instances;
import weka.core.converters.ArffSaver;
import weka.experiment.InstanceQuery;

public class Weka2Oracle_t {
/*
* 数据库读入
*/
public static void main(String[] args) throws Exception{
InstanceQuery q=new InstanceQuery();
q.setUsername("yangt");
q.setPassword("wasu1234");
q.setSparseData(true);
q.setQuery("select * from MONTH_KAIJI1 t where rownum<10");

Instances d=q.retrieveInstances();

System.out.println(d);

// save ARFF
ArffSaver saver = new ArffSaver();
saver.setInstances(d);
saver.setFile(new File("data\\testcsv1.arff"));
saver.writeBatch();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: