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

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();
	
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值