数据导入与预处理——数据导入导出实验一

目录

1.MySQL下载与安装

2.实验内容

附件:

2.1 任务一解答:

2.2 任务二解答:

销售部门输入:

物流部门输入:

客户关系部门输入:

 文本文件输出:

仓库部门输入:​

售后部门输入 :

一些问题(后面会实时更新,如果大家有问题可以问博主,博主解决了会更新上) 


1.MySQL下载与安装

下载地址:MySQL :: Download MySQL Community Server

 下载完后将zip包解压到自己指定的文件夹下,这里我解压到了D盘,记住自己路径哦

 然后设置环境变量

 

 

 然后在解压缩后的文件夹下创建data文件夹和my.ini配置文件

配置my.ini文件

里面的

basedir = D:\mysql-8.0.30-winx64
datadir = D:\mysql-8.0.30-winx64\data

是你自己的存放目录哈,自己修改

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir = D:\mysql-8.0.30-winx64
# 设置mysql数据库的数据的存放目录
datadir = D:\mysql-8.0.30-winx64\data
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 创建模式
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

然后以管理员身份打开命令提示符(cmd)

如果之前有过mysql服务(或者以前安装过),先执行以下命令,删除mysql服务

sc delete mysql

依次运行下面命令 

C:Windows\system32>mysqld --remove  //删除mysql服务
C:Windows\system32>mysqld --install //安装mysql服务 
C:Windows\system32>mysqld --initialize //一定要初始化 

 初始化后,你会看见刚刚空的data文件夹里面生成了如下文件

 最后启动mysql服务

C:Windows\system32>net start mysql

服务启动成功

登录mysql

mysql -u root -p

 这时候需要输入密码,mysql初始化会有一个密码

 

 然后将密码输入

成功进入,这时候我建议改一改密码,为了方便后面的数据库连接,此时输入以下命令

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

最后输入exit; 推出即可

2.实验内容

某连锁超市为了优化经营管理,拟搭建一个商务智能系统,来帮助企业管理团队更全面、专业的通过数据了解业务况状。目前公司有一个订单数据库,记录了每一笔订单的详细数据,包括以下字段:

【字段名称,订单编号,下单日期,销售点,支付方式,发货日期,物流时限,客户编号,客户名称,客户类型,客户城市,客户省份,客户地区,产品编号,产品名称,产品分类,产品细类,金额,数量,折扣,利润,推销员,是否退货,财政年度】

(注:详细数据类型及样例,请参考附件“orders.sql”)

然而,各部门对数据的关注点不同,且各部门使用数据分析工具对数据的格式要求也不一样。因此,公司委托你开发一个数据转换系统,将订单数据库中的数据按照不同部门的需求进行转换和输出。各部门具体需求如下:

部门名称

销售部门

物流部门

客户关系部门

仓储部门

售后部门

输出字段

订单编号

销售点

支付方式

金额

数量

折扣

利润

推销员

订单编号

下单日期

发货日期

物流时限

订单编号

客户编号

客户名称

客户类型

客户城市

客户省份

客户地区

订单编号

产品编号

产品名称

产品分类

产品细类

订单编号

产品编号

客户编号

是否退货

金额

数据格式

.xlsx文件

.json文件

.csv文件

.xml文件

数据库表

命名规则

文件名:姓名拼音-当前日期

数据库表名:return

输出路径

输出文件路径为转换文件的当前目录

特殊要求

工作表名: 中文姓名

所有数据放到1个文件中

以逗号作为分隔符

'订单编号'作为节点属性,其它字段作为节点内容

只导出[是否退货=1]的数据

数据库表自行创建

附件:

order附件

答题要求:

任务一搭建KETTLE项目开发环境

  1. 在MySQL中创建kettledb数据库和orders表结构及数据
  2. 在KETTLE SPOON中创建转换工程(KTR), 转换名称为个人姓名
  3. 在KTR中创建kettledb数据库连接, 数据库连接参数使用变量(命名参数)

任务二:销售数据导入和导出

  1. 需提供转换步骤设计全图
  2. 需提供主要转换步骤的关键配置项截图
  3. 需提供新建数据库表的SQL语句或操作界面截图
  4. 需提供转换执行结果截图

需提供输出的文件/数据库表内容的截图

2.1 任务一解答:

首先使用Navicat连接MySQL数据库

 打开下载的orders.sql文件

 然后运行,会多出kettle这个数据库,下面有orders这个表(先刷新一下哈) 

此时数据库和相应的表已经创建,我们开始在spoon进行数据库连接

在spoon连接前,需要添加sql连接包到lib文件夹下(如下图所示)

 下载地址:MySQL :: Download MySQL Connector/J (Archived Versions)

 下载成功后进行解压(建议和你的MySQL版本一致,如果高版本不行,建议下载低版本,有的版本中有两个jar包,有的只有一个)

将这个jar包添加到 你安装kettle的lib文件夹下

然后开始连接spoon 

 点击文件,然后再点击新建,在点击数据库连接,出现如下页面,然后进行对应配置,因为要求用命名参数配置,这里就设置了一下字符编码=-=(浅更新一下这个点,最先不太理解他的意思,现在大概理解了)

 然后新建一个转换,在对其进行保存(在新建里面)

 任务一则完成

2.2 任务二解答:

首先把流程搭建一下

 然后依次设置

销售部门输入:

 Excel 输出:

 其他的内容和字段默认即可

物流部门输入:

JSON output:
 其余步骤一样,字段默认即可

客户关系部门输入:

 文本文件输出:

基本和前面类似,唯一不同的就是内容有点差异

 其余默认即可

仓库部门输入:

XML output:

 内容默认即可

售后部门输入 :

表输出:

首先需要创建一个表,我们在Navicat中新建一个查询,然后创建return0表

CREATE TABLE return0 (
  订单编号 char(14) ,
  客户编号 varchar(20) ,
  产品编号 char(14) ,
  金额 float ,
  是否退货 tinyint(1) 
);

其中这些字段可在order表中去查看

 设置表输出

 其余默认

 最终运行结果:

一些问题(后面会实时更新,如果大家有问题可以问博主,博主解决了会更新上) 

 1.net start mysql 无法启动

这时候去查看这个.err文件

 较为常见就是这个问题,说你3306的这个端口被占用,这时候打开你的cmd输入,查看你的3306的pid

netstat -aon|findstr 3306

这是pid 

 然后输入下面命令kill掉这个端口号就行,然后再重新net start mysql即可

taskkill /pid pid号 -t -f

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
数据预处理中的自定义转换是指将数据集中的原始数据按照一定的规则进行处理,以便于后续的模型训练和应用。C++作为一门强类型语言,提供了丰富的数据类型和操作函数,可以非常方便地实现数据预处理中的自定义转换。下面以一个简单的案例来演示如何使用C++实现数据预处理中的自定义转换。 假设我们有一个包含学生信息的数据集,其中每个学生的信息包括姓名、年龄、性别与成绩四个属性。现在我们要对这个数据集进行处理,将每个学生的成绩按照以下规则转换为一个0~5的整数: - 小于60分的成绩转换为0 - 60~69分的成绩转换为1 - 70~79分的成绩转换为2 - 80~89分的成绩转换为3 - 90~99分的成绩转换为4 - 100分的成绩转换为5 下面是一个使用C++实现的解决方案: ```c++ #include <iostream> #include <vector> #include <string> using namespace std; // 定义一个结构体,表示学生信息 struct Student { string name; int age; char gender; int score; }; // 自定义转换函数,将成绩转换为0~5的整数 int score_transform(int score) { if (score < 60) { return 0; } else if (score < 70) { return 1; } else if (score < 80) { return 2; } else if (score < 90) { return 3; } else if (score < 100) { return 4; } else { return 5; } } int main() { // 定义一个学生信息列表 vector<Student> students = { {"张三", 18, 'M', 75}, {"李四", 19, 'F', 68}, {"王五", 20, 'M', 92}, {"赵六", 21, 'F', 85} }; // 遍历学生信息列表,将成绩转换为整数 for (auto& student : students) { student.score = score_transform(student.score); } // 输出转换后的学生信息列表 for (auto& student : students) { cout << student.name << " " << student.age << " " << student.gender << " " << student.score << endl; } return 0; } ``` 在上面的代码中,我们首先定义了一个包含学生信息的结构体`Student`,并且定义了一个自定义转换函数`score_transform`,用于将成绩转换为整数。然后我们定义了一个学生信息列表`students`,并且遍历该列表,将每个学生的成绩按照自定义转换函数进行转换。最后我们输出转换后的学生信息列表。 需要注意的是,在实际应用中,我们可能需要进行更加复杂的自定义转换,例如对数据进行归一化、标准化、降维等处理。C++提供了丰富的函数库和工具,可以帮助我们实现这些复杂的自定义转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值