2-17作业 数据库和shell综合练习

1、 使用shell把“12306用户名和密码库-不要使用记事本打开会卡死-解压后可使用word或ultraedit打开.rar”中的所有记录成生sql语句,然后把sql导入数据库,成一个uPwd_12306表。字段自己定义。
扩展:请分析一下“12306用户名和密码库”中密码的形成特点并总结。
2、复制出“12306用户名和密码库-不要使用记事本打开会卡死-解压后可使用word或ultraedit打开.rar”所有邮箱和密码字段,使用u_id,邮箱,密码字段创建一个独立的表uPwd。对uPwd表创建索引,方便后期自己后期暴力破解帐号时,查找用户名和密码
3、查看uPwd_12306表中是否有自己的姓名的记录
4、查找出uPwd_12306表中所有90后记录并成生视图uPwd_90。(出生年>=1990)

1.先将文件copy过来

解决中文乱码问题:

[[email protected] ~]# find / -name vimrc

/etc/vimrc

[[email protected] ~]# vim /etc/vimrc

set fileencodings=utf-8,gb2312,gbk,gb18030

set termencoding=utf-8

set fileformats=unix

set encoding=prc

写脚本

[[email protected] ~]# vim make_12306_table.sh

#!/bin/bash
#made by ygy 2016-10
#translate Convert a newline symbol,
# Write SQL sentences such as insert into table_name values(‘a‘,‘b‘);

file=/home/yy/
#convert \r to ‘‘
sed -i ‘s/\r//‘ "$file"12306.txt

mysql -e ‘create database if not exists 12306_data;‘ -usystem -p123456
echo ‘DROP TABLE IF EXISTS uPwd_12306;‘>"$file"12306_mid.sql
echo "CREATE TABLE uPwd_12306 (
      uid    int primary key auto_increment,
      uname  varchar(40)  not null default ‘‘,
      paw   varchar(25) not null DEFAULT ‘‘,
      realname  varchar(30)  not null DEFAULT ‘‘,
      gmsfhm   varchar(18) not null DEFAULT ‘‘,
      other   varchar(25) not null DEFAULT ‘‘,
      tel     varchar(11)  not null DEFAULT ‘‘,
      email    varchar(40) not null  DEFAULT ‘‘
      );">>"$file"12306_mid.sql

sed ‘s/----/‘\‘,\‘‘/g‘ "$file"12306.txt |awk ‘{print "insert into uPwd_12306(uname,paw,realname,gmsfhm,other,tel,email) values(‘\‘‘"$0"‘\‘‘);"}‘>>"$file"12306_mid.sql
mysql -usystem -p123456 12306_data < "$file"12306_mid.sql

运行报错

上网查了下原因,因为数据太多。要修改一下下面的配置,对应linux是my.cnf

重启mysql

[[email protected] ~]# service mysqld restart

再次运行

[[email protected] ~]# ./make_12306_table.sh

ERROR 1064 (42000) at line 2279: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘210504197710140512‘,‘licheng1977‘,‘13942443523‘,‘[email protected]‘);

报错,我查看一下中间文件

发现这条数据是中文是乱码。

明明已经转了编码,为什么有的字是乱码。

经过研究,原先上传的12306.txt的编码是utf8,使用notepad++打开,中文是乱码,

将格式转成ansi后,中文能正确显示出来,因此,将显示正确的内容剪切,然后调整编码格式为utf8,再把剪切的内容粘贴上去。

然后再把这个转码后的12306.txt上传到linux。

这个方法可行,尝试的其他方法都没有行得通。

再次运行

[[email protected] ~]# ./make_12306_table.sh

经过等待后,进入mysql验证一下。

验证成功!

2.

mysql> create table if not exists uPwd  ( uid int(10) primary key, upwd varchar(25), email varchar(40));

导入数据

mysql> insert into uPwd ( uid, upwd, email)select uid,paw,email from uPwd_12306;

Query OK, 131653 rows affected (0.52 sec)

Records: 131653  Duplicates: 0  Warnings: 0

3. mysql> select * from uPwd where email like ‘4145965‘;

4. mysql> create view uPwd_90 as select * from uPwd_12306 where substring(gmsfhm,7,4)>=1990;

Query OK, 0 rows affected (0.00 sec)

时间: 2024-10-23 13:45:42

2-17作业 数据库和shell综合练习的相关文章

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  Select 列 into 新表;字符串函数;日期函数 SQL聚合函数 MAX(最大值).MIN(最小值).AVG(平均值).SUM(和).COUNT(数量:记录的条数) 聚合函数对null不计算.如果一行数据都是null,count(*)包含对空值行.重复行的统计. --聚合函数演示 selec

Linux下定时备份MySQL数据库的Shell脚本

Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说.于是,有了下面这段脚本的出现.参考了网上的很多教程,外加自己的测试,以下脚本经测试可用.#!/bin/bash#Shell Command For Backup MySQL Database Everyday Automatically By Crontab#Author :

全自动安装mongoDB数据库的shell脚本

最近在研究mongoDB数据库,写了个全自动安装mongoDB数据库的shell脚本,仅供参考,欢迎拍砖,内容如下: #!/bin/bash # shell的执行选项: # -n 只读取shell脚本,但不实际执行 # -x 进入跟踪方式,显示所执行的每一条命令 # -c "string" 从strings中读取命令 # 下载目录 downloadsDir=/root/Downloads # 安装目录 appDir=/usr/local/mongodb # 判断备份目录是否存在,不存时

SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识

原文:SQL点滴17-使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识 在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息,今天把自己工作过程中经常用到的一些数据库引擎存储过程,系统视图等等总结一下以备不时之用.下面的知识多是自己总结,有一些参考了MSDN. sp_help 有时候想尽快查出数据库对象的相关信息,这个存储过程就很有用了.使用它可以查询出整个数据库中所有对象的相关信息.直接运行sp_help结果如下图1,

shell综合实例

shell 综合实例(一) 备份系统配置文件: 1.定时任务服务的配置文件/var/spool/cron/root 2.开机自启动配置文件/etc/rc.local 3.日常脚本的目录 4.防火墙iptables的配置文件/etc/sysconfig/iptables 配置文件.程序.日志分开打包 全网服务器数据备份方案提出及负责实施 1.针对公司重要数据备份混乱情况和领导提出备份全网数据的备份方案 2.通过本地打包备份,然后rsync结合inotify应用把全网数据统一备份到一个固定存储服务器

mysql定时备份数据库的shell

一,准备好shell脚本 查看复制打印? vi /home/zhangy/database_bak.sh #!/bin/sh # File: /home/zhangy/database_bak.sh # Database info bakupmysql  TANK 2009/11/04 DB_USER="root"                                                              #用户名 DB_PASS="******

Linux下自动还原MySQL数据库的Shell脚本

创建shell脚本topjui_source.exp,内容如下: #!/usr/bin/expect spawn echo "###### running... ######" spawn echo $argv0 spawn echo $argv1 set timeout 30 spawn mysql -uroot -p123456 set timeout 30 expect { "hi" { send "You said hi\n"} &quo

Caché(Cache)数据库的审计综合描述

1. 什么是Caché(Cache)数据库 Caché(Cache)是一种后关系型数据库,它提供三种方式访问数据:对象访问.SQL访问.直接对多维数据数组访问.而且三种访问方式能够并发访问同一数据. Caché(Cache)使用了多维数据引擎,使得对象数据从磁盘到内存的过程得以很快完成,而且读写磁盘相互关联数据的数据非常快.多维数据模型的高效访问使Caché(Cache)非常适合经常更新少量数据的交易处理应用,因为Caché(Cache)将数据组织成N维的数组,对于交易所需要的数据,可以很容易地

2016.8.17服务器端数据库用户导入导出方法 expdp和impdp

EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用. IMP只适用于EXP导出的文件,不适用于EXPDP导出文件:IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件. EXPDP导出命令: C:\Users\Administrator>expdp ndp_admin/[email protected] schemas=ndp2016_04 dumpfile=snn