当前位置: 首页 > news >正文

学习大数据DAY26 简单数据清洗练习和 Shell 脚本中的数据库编程

目录

上机练习 14

mysql 命令

sql 语句实现步骤

shell 脚本导入 csv 格式文件到 mysql 数据库

secure-file-priv 特性

把文件拷贝到 mysql 指定目录下

上机练习 15

mysqldump 命令

上机练习 16


上机练习 14

运用上一节课学的 Shell 工具完成
1. 清洗数据《infotest.txt》保存成《infotest.csv》
infotest.txt 内容
实现代码:
# sed 's/\[{//g' /root/infotest.txt \# | sed 's/\"//g' \
# | awk -v FS="," -v OFS="," 'BEGIN{print
# "catchTime,commentCount,content,createTime,pic_list,praiseCount,reportCount,sour
# ce"}{print $1,$2,$3,$4,$5,$6,$7,$8}' \
# | sed 's/catchTime://g' \
# | sed 's/commentCount://g' \
# | sed 's/content://g' \
# | sed 's/createTime://g' \
# | sed 's/pic_list://g' \
# | sed 's/praiseCount://g' \
# | sed 's/reportCount://g' \
# | sed 's/source://g' \
# | sed 's/}\]//g' > /root/infotest.csv
成品图:
2. 清洗数据《douban.txt》保存成《douban.csv》
douban.txt 内容
代码实现:
# sed 's/{//g' /root/douban.txt \
# | sed 's/},/\n/g' \
# | sed 's/}//g' \
# | sed 's/"//g' \
# | sed 's/subjects://g' \
# | sed 's/\[//g' \
# | sed 's/\]//g' \
# | sed 's/\\//g' \# | awk -v FS="," -v OFS="," 'BEGIN{print
# "episodes_info,rate,cover_x,title,url,playable,cover,id,cover_y,is_new"}{print
# $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}' \
# | sed 's/episodes_info://g' \
# | sed 's/rate://g' \
# | sed 's/cover_x://g' \
# | sed 's/title://g' \
# | sed 's/url://g' \
# | sed 's/playable://g' \
# | sed 's/cover://g' \
# | sed 's/id://g' \
# | sed 's/cover_y://g' \
# | sed 's/is_new://g' > /root/douban.csv
成品图:

mysql 命令

是 MySQL 数据库服务器的客户端工具,它工作在命令行终端中,完成对远程 MySQL
数据库
服务器的操作。
1. -h:MySQL 服务器的 ip 地址或主机名;
2. -u:连接 MySQL 服务器的用户名;
3. -e:执行 mysql 内部命令; 4. -p:连接 MySQL 服务器的密码。
5. -P:连接 MySQL 服务器的端口
mysql -h127.0.0.1 -P3306 -uroot -proot123456 test -e "select * from
student"

sql 语句实现步骤

drop table if exists ip
create table if not exists ip
(
one varchar(10),
two varchar(10),
three varchar(10),
four varchar(10)
)
LOAD DATA INFILE '/usr/local/mysql/data/ip.csv' INTO TABLE ip
CHARACTER SET utf8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES
select * from ip

shell 脚本导入 csv 格式文件到 mysql 数据库

secure-file-priv 特性

secure-file-priv 参数是用来限制 LOAD DATA, SELECT ... OUTFILE, and
LOAD_FILE() 传到哪个指定目录的。
查看配置文件
cat /etc/my.cnf
[mysqld]
user=mysql
port=3306
character-set-server=utf8
secure_file_priv=/usr/local/mysql/data

把文件拷贝到 mysql 指定目录下

cp /root/ip.csv /usr/local/mysql/data/ip.csv
shell 里面执行 mysql 语句
host="127.0.0.1"
port="3306"
user="root"
passwd="root123456"
dbname="test"
csvin="LOAD DATA INFILE '/usr/local/mysql/data/ip.csv' INTO TABLE ip
CHARACTER SET utf8
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
IGNORE 1 LINES "
mysql -h$host -P$port -u$user -p$passwd $dbname -e "$csvin"
自动拼接创建表
sql2="create table if not exists $2("
cols=`head -n +1 $1 | sed 's/,/ /g'`
# 得到最后一个列名
lastName=`head -n +1 $1 | awk -v FS="," '{print $NF}'`
# echo $lastName
for i in $cols
do
if [ $i == $lastName ]
then
sql2="$sql2 $i varchar(200)"
else
sql2="$sql2 $i varchar(200),"
fi
done
sql2="$sql2)"
# echo $sql2

上机练习 15

编写 shell 脚本 /root/shell/mysqlcsv.sh
# host="127.0.0.1"
# port="3306"
# user="root"
# passwd="root123456"
# dbname="test"
# 编写 shell 脚本/root/shell/mysqlcsv.sh
# 1.如果 douban 表存在则删除
# mysql1="drop table if exists douban"
# mysql -h$host -P$port -u$user -p$passwd $dbname -e "$mysql1"
# 2.如果 douban 表不存在则新建
# mysql2="create table if not exists douban
# (
# episodes_info varchar(10),
# rate float(4,1),
# cover_x int(8),
# title varchar(40),
# url varchar(200),
# playable varchar(10),# cover varchar(200),
# id varchar(20),
# cover_y varchar(10),
# is_new varchar(10)
# );"
# mysql -h$host -P$port -u$user -p$passwd $dbname -e "$mysql2"
# # 3.导入 douban.csv 数据到 douban 表中,建表过程为根据导入的 csv 文件自动创
建表
# mysql3="LOAD DATA INFILE '/usr/local/mysql/data/douban.csv' INTO TABLE
douban
# CHARACTER SET utf8
# FIELDS TERMINATED BY ','
# LINES TERMINATED BY '\n'
# IGNORE 1 LINES"
# mysql -h$host -P$port -u$user -p$passwd $dbname -e "$mysql3"
# # 4.查询 douban 表验证结果
# mysql4="select * from douban"
# mysql -h$host -P$port -u$user -p$passwd $dbname -e "$mysql4"

mysqldump 命令

上机练习 16

实现每天凌晨 3 点 10 分备份数据库 test 到/root/backup/db
一、编写 shell 脚本为 /root/shell/backdb.sh
1.判断路径/root/backup/db 是否存在,不存在创建,存在开始备份
2.备份后的文件以时间命名,如 20230401110101.sql
3.在备份的同时,检查是否有 10 天前的备份数据库文件,有则删除之
二、编写定时任务,任务是执行上面的 shell 脚本
today=$(date +"%Y%m%d%H%M%S")
if [ -f /root/backup/backup.db ]
then
for i in `find /root/backup -mtime +10`
do
if [ -f $i ]
then
rm -rf $i
break
fi
done
mv /root/backup/backup.db /root/backup/$today.sql
touch /root/backup/backup.db
else
touch /root/backup/backup.db
fi
定时任务,终端输入 crontab -e
G 进入最后一行
o 进入编辑模式,在下一行开始编辑
输入 10 3 * * * ./root/shell/backdb.sh
ESC 回到一般模式
:wq! 强制保存并退出
今天内容就这么多,明天考试了,我先去复习啦。

相关文章:

学习大数据DAY26 简单数据清洗练习和 Shell 脚本中的数据库编程

目录 上机练习 14 mysql 命令 sql 语句实现步骤 shell 脚本导入 csv 格式文件到 mysql 数据库 secure-file-priv 特性 把文件拷贝到 mysql 指定目录下 上机练习 15 mysqldump 命令 上机练习 16 上机练习 14 运用上一节课学的 Shell 工具完成 1. 清洗数据《infotest.t…...

开发业务(3)——swoole和聊天室入门开发

在普通的PHP代码里面,我们不需要考虑性能和异步问题,包括不限于我们想要使用php搭建一个http服务器(在node/python/go里面都有http模块,但是PHP没有这种功能)。而同样的原因,很难实现php游戏的开发&#xf…...

Linux系统服务——【web,http协议,apache服务和nginx服务】(sixteen day)

一、web基础以及http协议 1、web基本概念和常识 前端开发一般用uniapp. 1、Web:为用户提供的一种在互联网上浏览信息的服务,Web 服务是动态的、可交互的、跨平台的和图形化的。 2、Web 服务为用户提供各种互联网服务,这些服务包括信息浏览服务&#xf…...

100、Python 关于时间日期的一些操作

在Python中,我们用于处理时间和日期相关的类型最常用的模块是datetime模块。该模块提供了很多与时间日期相关的类,对我们处理时间日期变得很方便。 以下是一些常见的关于时间日期的操作。 一、datetime类 1、获取当前日期和时间(年、月、日…...

【精通Redis】Redis命令详解

引言 Redis是一个内存数据库,在学习它的内部原理与实现之前,我们首先要做到的就是学会使用,学会其丰富的命令操作。 一、字符串 Redis的字符串类型之前笔者的一篇入门介绍中曾经说过,不是简单的只存人可以阅读的字符串&#xf…...

项目经理的开源工具指南:优化您的选择过程

国内外主流的10款开源项目管理系统对比:PingCode、Worktile、禅道、Teambition、Gogs、码云 Gitee、Jira、Redmine、ProjectLibre、OpenProject。 在选择合适的开源项目管理系统时,很多团队面临诸多挑战:功能是否全面?易用性如何&…...

如何防御IP劫持

摘要 IP劫持是一种网络攻击方式,攻击者通过各种手段获取对某个IP地址的控制权,并将其用于恶意目的。这种攻击可能会导致数据泄露、服务中断等严重后果。本文将介绍IP劫持的基本概念、攻击方式以及防御策略,并提供一些实际的代码示例。 IP劫…...

C++绝对值

在C中&#xff0c;你可以使用标准库中的abs函数来获取一个整数的绝对值。对于浮点数&#xff0c;也有一个类似的函数叫做fabs。下面是如何使用这些函数的示例&#xff1a; 对于整数 对于整数&#xff0c;你可以使用std::abs函数&#xff0c;它存在于<cstdlib>头文件中。…...

C# dataGridView 去掉左边多出来空列

1.问题 在使用winform做界面程序时&#xff0c;dataGridView控件创建好后&#xff0c;左侧会多出一列为空&#xff0c;如何删除呢 2.解决方法 你可以在属性窗口中进行设置 如图&#xff1a; 将RowHeadersVisible 属性设置为False 或者代码设置 this.dataGridView1.RowHea…...

esp32

买了单片机模块&#xff0c;学8266...

IDEA 本地有jar包依赖文件,但是所有引用的jar包全部爆红

前端时间 看源码&#xff0c;下载源码额按钮不见了&#xff0c;折腾了很久&#xff0c;遂打算重新安装idea&#xff0c;但是重新安装后&#xff0c;发现代码全都爆红&#xff0c;按照晚上说的删除idea 文件夹&#xff0c;idea缓存删除&#xff0c;都不好使&#xff0c;但是看到…...

如何在调整节拍时间的过程中保持生产流程的稳定性?

在快节奏的工业生产领域&#xff0c;节拍时间&#xff08;Takt Time&#xff09;——即完成一个完整产品所需的标准时间&#xff0c;是维持生产效率和流程稳定性的关键指标。然而&#xff0c;市场需求的波动、技术升级或是生产线的微调&#xff0c;都可能要求我们对节拍时间进行…...

3. Docker的数据管理与持久化

在Docker容器化应用中&#xff0c;数据的持久化和管理是一个关键问题。容器的生命周期短暂&#xff0c;容器的停止和删除会导致数据丢失。因此&#xff0c;了解Docker的数据卷&#xff08;Volumes&#xff09;和挂载&#xff08;Mounts&#xff09;的管理方式&#xff0c;对保障…...

Logback原理及应用详解(九)

本系列文章简介&#xff1a; 在软件开发的过程中&#xff0c;日志记录是一项至关重要的功能。它不仅帮助开发者在开发阶段追踪代码的执行流程和调试问题&#xff0c;还在生产环境中扮演着监控应用运行状态、记录关键业务信息和排查故障的重要角色。随着软件系统的日益复杂和分布…...

SpringBoot 禁用RabbitMQ自启动

1.背景 在实际开发中,项目中使用了mq,但是在测试的时候用不到mq,或者测试环境的mq挂了, 希望能正常启动项目 2.步骤 这很简单在配置文件中增加一个配置就可以了 spring:autoconfigure:exclude: org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration 表示启…...

unity 实现图片的放大与缩小(根据鼠标位置拉伸放缩)

1创建UnityHelper.cs using UnityEngine.Events; using UnityEngine.EventSystems;public class UnityHelper {/// <summary>/// 简化向EventTrigger组件添加事件的操作。/// </summary>/// <param name"_eventTrigger">要添加事件监听的UI元素上…...

Scrapy 爬取旅游景点相关数据(五)

本期内容&#xff1a;&#xff08;1&#xff09;爬取日本其他城市数据存入数据库&#xff08;2&#xff09;爬取景点评论数据 1 爬取其他城市景点数据 只爬取一个城市的数据对于做数据可视化系统可能是不够的&#xff0c;因为数据样本量少嘛&#xff0c;本期来爬取其他城市的景…...

程序员纯粹八股文的危害有哪些,应该如何来解决?

“八股文”这个词在程序员面试的上下文中通常指的是那些被广泛讨论、反复练习的问题和答案&#xff0c;它们往往围绕着一些经典的技术知识点&#xff0c;例如算法、数据结构、设计模式等。这些知识在面试中被频繁提及&#xff0c;以至于应聘者经常会提前准备并背诵这些答案&…...

LabVIEW操作系列1

系列文章目录 我的记录&#xff1a; LabVIEW操作系列 文章目录 系列文章目录前言五、特殊用法5.1 取值范围表示5.2 对输入值取值范围进行限定5.3 控制多个While循环停止运行。5.4 获取按钮上的文本5.5 获取按钮上的文本【进阶】 六、使用步骤1.引入库2.读入数据 七、其余功能7.…...

【前端 09】JavaScript中的对象与JSON

JavaScript中的对象与JSON 在JavaScript中&#xff0c;对象和JSON&#xff08;JavaScript Object Notation&#xff09;是两个紧密相连但又有区别的概念。它们都在数据处理和交换中扮演着重要角色。本文将详细讲解JavaScript中的自定义对象以及JSON对象的基本概念、格式、用法…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...