iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Shell/Python实现Mysql读
  • 145
分享到

Shell/Python实现Mysql读

ShellPythonMysql 2023-01-31 06:01:30 145人浏览 薄情痞子
摘要

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

文本: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

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

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通过事务,全部执行完毕才提交,一次提交完成那个所有的插入,节省连接与断开的时间。



您可能感兴趣的文档:

--结束END--

本文标题: Shell/Python实现Mysql读

本文链接: https://www.lsjlt.com/news/190328.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载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...
    99+
    2023-01-31
    Shell Python Mysql
  • python 读shell
    test_txt = '/home/zcm/tensorf/siamfc-tf-master/data/Biker/groundtruth.txt'def load_label_set(label_dir):label_folder = o...
    99+
    2023-01-31
    python shell
  • MySQL Router实现MySQL的读写分离
    MySQL Router实现MySQL的读写分离 https://www.cnblogs.com/f-ck-need-u/p/9276639.html https://www.cnblogs.com...
    99+
    2024-04-02
  • Python 串口读写实现
    #Python 串口读写实现 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:12951803 1.安装pyserial https://pypi.python.org/pypi/p...
    99+
    2023-01-31
    串口 Python
  • 安装mysql-proxy实现mysql读写分离
    一. 环境描述操作系统版本:centos 7.2主服务器:192.168.0.72  node2从服务器:192.168.0.73  node3调度服务器MySQL-Proxy...
    99+
    2024-04-02
  • 怎么实现mysql读写分离
    这篇文章主要介绍“怎么实现mysql读写分离”,在日常操作中,相信很多人在怎么实现mysql读写分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么实现mysql读写分离”...
    99+
    2024-04-02
  • mysql如何实现读已提交
    在 mysql 中实现读已提交隔离级别,可通过设置 repeatable read 或 read committed 级别。repeatable read 确保读取的数据在事务期间不会被...
    99+
    2024-04-14
    mysql
  • 部署Amoeba3.X实现Mysql读写
    项目介绍:    Amoeba for Mysql软件,致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与Client、DB之...
    99+
    2023-01-31
    Mysql
  • 用shell脚本连接、读写、操作mysql数据库实例
    本篇内容介绍了“用shell脚本连接、读写、操作mysql数据库实例”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 连接mysql 数据...
    99+
    2023-06-09
  • mysql怎么实现可重复读
    要实现可重复读,可以通过以下两种方式:1. 使用事务隔离级别为"可重复读":在MySQL中,可通过设置事务隔离级别来实现不同的并发控...
    99+
    2023-09-15
    mysql
  • Windows开发者必读:Python、npm和shell的最佳实践!
    作为一名Windows开发者,你可能已经熟悉了多种开发工具和语言。但是,Python、npm和shell(命令行)却是必不可少的工具。Python是一个强大的编程语言,npm是Node.js的包管理器,而shell则是一个可以让你直接与操...
    99+
    2023-10-14
    npm shell windows
  • 如何实现Shell脚本逐行读取文本文件
    这篇文章主要介绍“如何实现Shell脚本逐行读取文本文件”,在日常操作中,相信很多人在如何实现Shell脚本逐行读取文本文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现Shell脚本逐行读取文本文件...
    99+
    2023-06-09
  • 用Shell实现逐行读取文件的4种方法
    这篇文章主要介绍“用Shell实现逐行读取文件的4种方法”,在日常操作中,相信很多人在用Shell实现逐行读取文件的4种方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”用Shell实现逐行读取文件的4种方法...
    99+
    2023-06-09
  • Shell脚本读取ini配置文件的实现方法
    本篇内容介绍了“Shell脚本读取ini配置文件的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简单版参考stackoverfl...
    99+
    2023-06-09
  • shell+Python实现简单的链路监
    背景:游戏公司,服务器上有充值服,世界服,经分服务器等,和前端的game有链接通信,为防止链接通信故障导致线上业务中断,需要一个小脚本时刻监控线上链接状况。涉及:shell、python2.6、126免费邮箱配置:vim /usr/ligh...
    99+
    2023-01-31
    链路 简单 shell
  • MySQL中如何实现读写分离
    MySQL中如何实现读写分离,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一,创建Master数据库的配置文件vi master...
    99+
    2024-04-02
  • python读取.data文件的实现
    目录.data文件格式1、先测试一下文件是文本文件还是二进制文件2、用Pandas读取.data文件3、其他数据存储类型.data文件格式 .data文件是用来存储数据的一种文件格式...
    99+
    2023-02-08
    python读取.data文件 python读取.data
  • python文件读写怎么实现
    这篇文章主要介绍了python文件读写怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python文件读写怎么实现文章都会有所收获,下面我们一起来看看吧。读文件打开一个文件用open()方法(open()...
    99+
    2023-06-29
  • 如何用shell实现Mysql延时复制
    这篇文章主要介绍“如何用shell实现Mysql延时复制”,在日常操作中,相信很多人在如何用shell实现Mysql延时复制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何...
    99+
    2024-04-02
  • MySQL一键安装Shell脚本的实现
    目录一、脚本说明1、linux系统版本2、MySQL版本3、运行方式二、脚本内容一、脚本说明 1、linux系统版本 EL6, EL7, EL8, and EL9-based pla...
    99+
    2023-01-08
    MySQL安装Shell脚本 MySQL安装Shell
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作