数据仓库与数据挖掘课设

这篇博客介绍了如何使用Java进行数据仓库的构建,基于《数据仓库与数据挖掘应用教程》的内容,从数据库中抽取数据并进行转化。文章强调了Java开发环境需为1.7版本,并详细说明了配置数据库连接和使用JDBC驱动的过程。
摘要由CSDN通过智能技术生成

基础必做题:

Java实现数据库抽取转化到数据仓库。
教材:《数据仓库与数据挖掘应用教程》李春葆 -清华大学出版社


准备内容:

数据库,Java开发环境,数据库中有相应的数据
Java在创建项目时采用lib为1.7版本!

配置数据库连接:具体过程查看下面教程
连接数据库

下载相应的JDBC,并将相应的包导入Java创建的lib中;

代码如下:

package DB_Process;

import java.sql.*;//主要使用,Connection、DriverManager、ResultSet、Statement来进行和数据库打交道

public class DataExtraction {
   

	public static void main(String [] args){
   
		
		try{
   
			String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//显示加载数据库
			Class.forName(driverName);
			String dbURL_Src="jdbc:sqlserver://localhost:1433;DatabaseName=";
			String userName="sa";
			String userPwd="wang1102";
			Connection connecteSrc= DriverManager.getConnection(dbURL_Src+"OnRet",userName,userPwd);//创建连接OnRet对象
			Connection connecte= DriverManager.getConnection(dbURL_Src+"SDWtest",userName,userPwd);//创建连接SDW对象
			Statement stSrc = connecteSrc.createStatement();//获得对象,声明执行SQL语句对象
			Statement st = connecte.createStatement();//获得对象,声明执行SQL语句对象
			
			String sqlcreate = "create table Dates(Date_key INT,日期 CHAR(25),年份 CHAR(10),月份 CHAR(20),季度 CHAR(30),"
					+ "PRIMARY KEY(Date_key))";
			int resultcraet = st.executeUpdate(sqlcreate);//创建DATES表
			
			sqlcreate ="create table Age(Age_key INT,年龄 INT,年龄层次 CHAR(10),PRIMARY KEY(Age_key))";
			resultcraet = st.executeUpdate(sqlcreate);//创建AGE表
			
			sqlcreate = "create table Education(Educ_key INT,学历 CHAR(10),学历层次 CHAR(10),PRIMARY KEY(Educ_key))";
			resultcraet = st.executeUpdate(sqlcreate);//创建Education表
			
			sqlcreate = "create table Locates(Locate_key INT,地区 CHAR(25),省份 CHAR(10),市 CHAR(20),县 CHAR(10),"
					+ "PRIMARY KEY(Locate_key))";
			resultcraet = st.executeUpdate(sqlcreate);//创建Locates表
			
			sqlcreate = "create table Products(Prod_key INT,分类 CHAR(20),子类 CHAR(20),品牌 CHAR(20),"
					+ "PRIMARY KEY(Prod_key))";
			resultcraet = st.executeUpdate(sqlcreate);//创建Products表
			
			sqlcreate = "create table Sales(Date_key INT, Age_key INT, Educ_key INT,"
					+ "Locate_key INT,Prod_key INT,数量 INT, 金额 INT,"
					+ "PRIMARY KEY(Date_key,Age_key,Educ_key,Locate_key,Prod_key),"
					+ "FOREIGN KEY(Date_key) REFERENCES Dates(Date_key),"
					+ "FOREIGN KEY(Age_key) REFERENCES Age(Age_key),"
					+ "FOREIGN KEY(Educ_key) REFERENCES Education(Educ_key),"
					+ "FOREIGN KEY(Locate_key) REFERENCES Locates(Locate_key),"
					+ "FOREIGN KEY(Prod_key) REFERENCES Products(Prod_key))";
			resultcraet = st.executeUpdate(sqlcreate);//创建核心表
	
			String sql="select Sales.日期, Customers.年龄 ,Customers.学历,Customers.地区,Customers.省份,Customers.市,Customers.县,Sales.分类,"
					+ "Sales.子类,Sales.品牌,SUM(Sales.数量) AS 数量, SUM(Sales.金额) AS 金额 "
					+ "FROM Customers,Sales "
					+ "WHERE Customers.用户名 = Sales.用户名"
					+ " GROUP BY Sales.日期, Customers.年龄,Customers.学历,Customers.地区,Customers.省份,Customers.市,Customers.县,Sales.分类, Sales.子类, Sales.品牌";/*SQL命令*/
			ResultSet result = stSrc.executeQuery(sql);//执行select语句,返回的单个对象,连接表
			
			String time, Age, educ, dq, sf, cs, xm, fl, zl, pp, sl, jr;
			while(result.next()) {
   
				time = result.getString("日期");
				int Date_number = ProcessDates(time,st);
				Age	= result.getString("年龄");
				int Age_number = ProcessAge(Age,st);				
				educ = result.getString("学历");
				int Educ_number = ProcessEduc(educ.trim(),st);
				dq = result.getString("地区");
				sf = result.getString("省份");
				cs = result.getString(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值