我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Shell/Python实现Mysql读

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Shell/Python实现Mysql读

文本:ttt.txt 共7774865条记录

显示部分文本内容如下:

"OBJECT_ID","OBJECT_NAME","CREATED"

"20","ICOL$","2013/10/9 18:23:42"

"46","I_USER1","2013/10/9 18:23:42"

"28","CON$","2013/10/9 18:23:42"

"15","UNDO$","2013/10/9 18:23:42"

"29","C_COBJ#","2013/10/9 18:23:42"

"3","I_OBJ#","2013/10/9 18:23:42"

"25","PROXY_ROLE_DATA$","2013/10/9 18:23:42"

"41","I_IND1","2013/10/9 18:23:42"

"54","I_CDEF2","2013/10/9 18:23:42"

"40","I_OBJ5","2013/10/9 18:23:42"

"26","I_PROXY_ROLE_DATA$_1","2013/10/9 18:23:42"

"17","FILE$","2013/10/9 18:23:42"

"13","UET$","2013/10/9 18:23:42"

"9","I_FILE#_BLOCK#","2013/10/9 18:23:42"

"43","I_FILE1","2013/10/9 18:23:42"

"51","I_CON1","2013/10/9 18:23:42"

"38","I_OBJ3","2013/10/9 18:23:42"

"7","I_TS#","2013/10/9 18:23:42"

"56","I_CDEF4","2013/10/9 18:23:42"

       ......

       ......

为了方便测试:

我们选取前10001行,共10000条数据(第一条为字段名)

[11:05:12 wsdf@localhost Desktop]$ head -10001 ttt.txt > test.txt

如下是本人分别用python与shell编写的脚本,不代表脚本执行的方法是最优的,所作的比较仅为个人主观意见

1.Shell版

#!/bin/sh
#mysql_import.sh
#读ttt.txt文件,将其中各项写入数据库

i=0   #

###################设定新分隔符####################
SAVEDIFS=$IFS
IFS=','

#mysql连接函数
mysql_conn(){
mysql -e $1;
}

echo "Begin time: `date`"   #显示开始时间

################创建数据库myimport#################
mysql -e "drop database if exists myimport;"
#mysql_conn "drop database if exists myimport;"
mysql -e "create database myimport;"
#mysql_conn "create database myimport;"
#mysql -e "show databases;"

###############对ttt.txt进行处理###################
sed -e 's/\"//g' -e 's#/#-#g' ttt.txt >t.txt 

#i=0时,读文本第一行,创建表import_obj,设置i=1
#i=1,读文本其他行,插入数据到import_obj中
#逐行读数据,并通过mysql -e command插入到表中
while read ID NAME CREATED
do
if [ $i -eq 0 ]; then  
#echo $ID,$NAME,$CREATED
id=$ID
name=$NAME
created=$CREATED
mysql -e "create table if not exists myimport.import_obj(id int unsigned auto_increment primary key,$ID int unsigned unique not null,$NAME varchar(60) not null,$CREATED datetime not null);"
i=1
#mysql -e "desc myimport.import_obj;"
else 
#echo "$CREATED"
#mysql -e "select str_to_date($CREATED,'%Y-%m-%d %H:%i:%s');"
mysql -e "insert into myimport.import_obj($id,$name,$created) value($ID,'$NAME','$CREATED');"
fi
done <t.txt

echo "END time: `date`"  #显示结束时间

#mysql -e "select * from myimport.import_obj;"
rm -f t.txt  #删除临时文件
IFS=$SAVEDIFS  #还原分隔符

2.Python版(Python 2.7.5版本)

#!/usr/bin/python
# mysql_import.py

#使用MySQLdb去实现
import MySQLdb,os,time

os.system("sed -e 's/\"//g' -e 's#/#-#g' test.txt >t.txt");

try:
    print time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))  #记录开始时间
    conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='zhang1992')
    print "conn success"
except:
    print "conn error!"
    exit()
cur=conn.cursor()
cur.execute('drop database if exists myimport')
cur.execute('create database myimport')
i=0
count=0
with open('t.txt','r') as ft:
    for row in ft.readlines():
        ID,NAME,CREATED=list(row.strip("\n").split(","))
        if i==0:
            cid=ID
            cname=NAME
            created=CREATED
            cur.execute("create table if not exists myimport.import_obj(id int unsigned auto_increment primary key,%s int unsigned unique not null,%s varchar(60) not null,%s datetime not null)"%(ID,NAME,CREATED))
            i=1
        else:
            sql="insert into myimport.import_obj(%s,%s,%s) value(%d,'%s','%s')"%(cid,cname,created,int(ID),NAME,CREATED)
            cur.execute(sql)

os.system("rm -f t.txt")
cur.close()
conn.commit()
conn.close()

print time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))  #记录结束始时间


3.测试

10000条数据测试

[11:08:32 wsdf@localhost Desktop]$ bash mysql_import.sh          
Begin time: Tue Jul 19 11:08:35 CST 2016
End time: Tue Jul 19 11:11:50 CST 2016
[11:11:50 wsdf@localhost Desktop]$ python mysql_import.py                       
2016-07-19 11:16:46
conn success
2016-07-19 11:16:52

python处理完整文本测试

[13:06:30 wsdf@localhost Desktop]$ python mysql_import.py 
2016-07-19 13:06:35
conn success
2016-07-19 13:14:57
[13:14:57 wsdf@localhost Desktop]$ mysql -e "select count(*) from myimport.import_obj";
+----------+
| count(*) |
+----------+
|   774864 |
+----------+

从上面的测试结果可以看出,python的效率明显高于shell。

shell无法保存mysql的连接状态,导致每执行一条插入语句都需要重新连接mysql及断开。这里的python中的MySQLdb通过事务,全部执行完毕才提交,一次提交完成那个所有的插入,节省连接与断开的时间。



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Shell/Python实现Mysql读

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Shell/Python实现Mysql读

文本:ttt.txt 共7774865条记录显示部分文本内容如下:"OBJECT_ID","OBJECT_NAME","CREATED""20","ICOL$","2013/10/9 18:23:42""46","I_USER1","201
2023-01-31

python 读shell

test_txt = '/home/zcm/tensorf/siamfc-tf-master/data/Biker/groundtruth.txt'def load_label_set(label_dir):label_folder = o
2023-01-31

Python中如何实现MySQL的读写分离读写以提高性能?(在Python中如何配置MySQL实现读写分离读写?)

Python实现MySQL读写分离,将数据库划分为读写和只读服务器,提高性能和可用性。步骤包括:创建专用连接、使用游标、确定操作类型、选择适当连接和游标、执行数据库操作、关闭连接。优点包括提高性能、增加可用性、数据一致性。缺点是延迟和配置复杂性。
Python中如何实现MySQL的读写分离读写以提高性能?(在Python中如何配置MySQL实现读写分离读写?)
2024-04-02

Python 串口读写实现

#Python 串口读写实现如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518031.安装pyserialhttps://pypi.python.org/pypi/pyserialDo
2023-01-31

shell脚本读取命令行参数的实现

目录前提选项与参数:一.手工处理方式(已验证)二.getopts/getopt三.总结前提在编写shell程序时经常需要处理命令行参数 选项与参数:如下命令行:./test.sh -f config.conf -v --prefix=/ho
2022-06-04

mysql 基于mysql-proxy实现读写分离

mysql 读写分离读写分离首先不推荐使用,很多业务场景也没有必要,不仅增加技术复杂度,而且可能会导致读到落后的数据,建议优化数据库,推荐使用keepalive+mysql双主复制的方案然后mysql-proxy是官方推出的中间件,不仅无法高可用,而且这个项目
mysql 基于mysql-proxy实现读写分离
2015-08-29

python实现读取excel写入mysql的小工具详解

Python是数据分析的强大利器利用Python做数据分析,第一步就是学习如何读取日常工作中产生各种excel报表并存入数据中,方便后续数据处理。 这里向大家分享python如何读取excel,并使用Python将数据存入Mysql中,有需
2022-06-04

mysql读写分离实现方式

mysql 读写分离可通过两种方式实现:基于代理的:使用代理路由读写请求,配置简单、可扩展,但复杂度较高。基于主从复制的:复制写请求到从服务器,读请求从从服务器读取,配置简单、性能高,但可扩展性有限。MySQL 读写分离的实现方式读写分离
mysql读写分离实现方式
2024-08-01

部署Amoeba3.X实现Mysql读写

项目介绍:    Amoeba for Mysql软件,致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与Client、DB之
2023-01-31

Shell实现读取ini格式配置文件方法

ini文件格式一般都是由节、键、值三部分组成 格式: [第一节 ] 第一个键 = 值 第二个键 = 第二个值 [第二节 ] 第一个键 = val1,val2,val3 例子:[COM]KINGGOO = gimoo.net其实这个作用没那么
2022-06-04

mysql如何实现读已提交

在 mysql 中实现读已提交隔离级别,可通过设置 repeatable read 或 read committed 级别。repeatable read 确保读取的数据在事务期间不会被修改,而 read committed 确保读取的数据
mysql如何实现读已提交
2024-04-14

mysql怎么实现可重复读

要实现可重复读,可以通过以下两种方式:1. 使用事务隔离级别为"可重复读":在MySQL中,可通过设置事务隔离级别来实现不同的并发控制。默认的隔离级别是"可重复读",即在事务期间,读取的数据会保持一致,不受其他事务的影响。可以通过以下语句设
2023-09-15

MySQL Shell import_table数据导入的实现

目录1. import_table介绍2. Load Data 与 import table功能示例2.1 用Load Data方式导入数据2.2 用import_table方式导入数据3. import_table特定功能3.1 多文件导
2022-05-11

用shell脚本连接、读写、操作mysql数据库实例

本篇内容介绍了“用shell脚本连接、读写、操作mysql数据库实例”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 连接mysql 数据
2023-06-09

编程热搜

目录