一天一脚本--之二

脚本需求:

公司有台mysql数据库,每天会从一ftp服务器上下载*.dat文件,然后通过mysql把.dat文件导入数据库,在导入数据库之前需要判断数据库表中是否存在此记录,如果无此记录,则导入;如果已有些记录,则不导入。

脚本实现:

大概思路:通过mysql -e命令查询表中的记录中的特定列Guild_ID(唯一值),然后重定向到table.in文件中,通过for 循环遍历写到列表l中;

通过读取crm.dat文件,同样通过for循环把文件中的第一条记录读取到列表record中,对比record[2]中的值是否在列表l中,如果不在l中,就重定向l到文件table.will中。然后通过mysql -e把table.will文件导入mysql

脚本名:import.sh

#!/usr/bin/env python
import os
COMMAND1=‘(dbUser=root;dbPwd=123456;dbName=test;mysql -u$dbUser -p$dbPwd $dbName -e"select Guild_ID from TroopsRanks" > table.in)‘
COMMAND2="""(dbUser=root;dbPwd=123456;dbName=test;mysql -u$dbUser -p$dbPwd $dbName -e"load data local infile ‘/root/table.will‘ IGNORE into table TroopsRanks character set utf8(Area_ID,Group_ID,Guild_ID,Guild_Name,Grand_ParentID,Total_TroopsRecord,Total_MemberLevel);")"""
os.system(COMMAND1)

l=[]
record=[]

f1=open(‘table.in‘)
lines=f1.readlines()
f1.close()
f2=open(‘crm.dat‘)
records=f2.readlines()
f2.close()

for line in lines:
        line=line.strip(‘\n‘)
        l.append(str(line))

for record in records:
        record=record.split()
        if record[2] not in l:
                print record
                f=open(‘table.will‘,‘w‘)
                f.write(record[0])
                f.write(‘\t‘)
                f.write(record[1])
                f.write(‘\t‘)
                f.write(record[2])
                f.write(‘\t‘)
                f.write(record[3])
                f.write(‘\t‘)
                f.write(record[4])
                f.write(‘\t‘)
                f.write(record[5])
                f.write(‘\t‘)
                f.write(record[6])
                f.close()

os.system(COMMAND2)

时间: 2024-10-12 22:38:34

一天一脚本--之二的相关文章

shell脚本(二)

shell脚本(二)

SecureCrt脚本(二)二级对象之Dialog

SecureCrt脚本(二)二级对象之Dialog SecureCrt脚本 自动化 测试 JS脚本 前言 上篇"SecureCrt 脚本函数(一)"中详细介绍了顶级对象’crt’中的子属性和子方法,本篇中将详细介绍’crt’的子属性’Dialog’的方法.'Dialog’主要是用于Crt构建自己的和用户能够交互的简单界面,比如输入字符,弹出对话框,输出提示框等. 语法 crt.Dialog.Method([arglist]) 方法(Method) 一.FileOpenDialog 解释

在C#环境中动态调用IronPython脚本(二)

一.Python数据类型与C#数据类型的对应 Python中数据类型中的简单类型,例如int,float,string可以对应到C#环境中的int32,double,string,这些对应比较直观,Python中的复杂数据类型,例如List,Set等是C#环境中没有的,好在IronPython提供了这些数据类型的C#接口,使我们可以在C#环境中使用它们.如下表所示. C#                                                               

OGG维护优化脚本(二十三)-OGG状态监控系统--界面介绍

原本只是想做个简单的界面简单显示之前信息收集类脚本收集的goldengate的运行状况.后来感觉不错就慢慢的加了一些东西 具体界面如下 分为配置信息及状态,错误日志信息,replicat写入错误日志记录,以及附加日志异常记录 配置信息状态显示每个链路的具体配置信息以及进程状态, 正常状态下以蓝色NORMAL关键字显示 当有延时,进程中断等情况时,红色ALERT关键字显示异常状态 日志等监控界面会统计error的数量并以数字显示. 可以通过点击表格单元查看具体链路的信息状态 日志信息 写入进程异常

bash脚本(二)

for循环 for VAR in LIST; do statements ... done LIST列表: 1.直接给出 2.数值列表 {start..end},如{1..10} seq LAST seq FIRST LAST seq FIRST STEP LAST,如seq 1 2 10,会读取到13579 3.特殊变量$#,[email protected],$* 4.通过命令引用获取的参数列表,如($(grep 'bash$' /etc/passwd | cut -d: -f3)) 5.通

OGG维护优化脚本(二十五)-OGG状态监控系统--HTML实现

部分html 范例 主要用到了嵌套表格等简单的语法 <!DOCTYPE HTML> <html> <h1 align="center">goldengate监控系统</h1> <head> <style type="text/css"> p { border:red solid thin; outline:#00ff00 dotted thick; } </style> </h

OGG维护优化脚本(二十四)-OGG状态监控系统--后台脚本

这个简易监控系统具体是由html实现的 后台没有数据库,只有从各台机器收集并上传过来的html文件 通过定时shell脚本整理并分类到各个目录,然后通过apache被网页调用 具体更新频率取决于各数据同步服务器的定时任务运行频率 OGG进程状态整理脚本 这个脚本用于整理进程信息上传脚本 收集到的文件,将其合并为html文件 pcsindex.sh #!/bin/bash cd /root/gg/ggscript/pcsindex ls -lrt /root/gg/gginfo/*.gginfo|

Activemq判断队列存活脚本(二)

#脚本用途:检测Activemq集群的端口监听情况及其队列通畅情况 #!/usr/bin/env python #coding=utf-8  import paramiko import time import sys import stomp Aip = ("第一台mq服务器") Bip = ("第二台mq服务器") Cip = ("第三台mq服务器") list = [] def Checknetstat():     for i in (A

shell脚本笔记二:for语句

for 变量 in 循环; do       statementdone 练习: 写一个脚本计算1到100的所有整数合 #!/bin/bash # declare -i SUM=0 for I in {1..100}: do let SUM=$[$SUM+$I] done echo "The sum is $SUM"