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过来

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

解决中文乱码问题:

[root@ygy130 ~]# find / -name vimrc
/etc/vimrc

[root@ygy130 ~]# vim /etc/vimrc 

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

set termencoding=utf-8

set fileformats=unix

set encoding=prc

写脚本

[root@ygy130 ~]# vim make_12306_table.sh

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

#!/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

View Code

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

 运行报错

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

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

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

重启mysql

[root@ygy130 ~]# service mysqld restart

再次运行

[root@ygy130 ~]# ./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','licheng19771014@163.com');

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

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

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

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

 

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

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

 

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

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

再次运行

[root@ygy130 ~]# ./make_12306_table.sh 

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

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

验证成功!

2.

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

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

导入数据

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)

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

 

原文链接: https://www.cnblogs.com/yuguangyuan/p/5982248.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/397935

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月11日 上午9:50
下一篇 2023年4月11日 上午9:50

相关推荐