当前位置: 首页 > 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对象的基本概念、格式、用法…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...