设为首页 加入收藏

TOP

通过Loadtable命令将数据文件加载到SybaseIQ数据库里面的Python脚本(二)
2014-11-24 00:59:48 来源: 作者: 【 】 浏览:30
Tags:通过 Loadtable 命令 数据 文件 加载 SybaseIQ 数据库 面的 Python 脚本
ort = self._getSybIQServInfo()

# 获取表的所有字段
table_columns = '''
select column_name
from syscolumn a
join systable b
on a.table_id = b.table_id
where b.table_name = '%s' ># /tmp/table_name.log
'''%(table_name)
load_sql='''dbisql -c "uid=%s;pwd=%s" -Host %s -port %s -nogui "%s"'''%(self.UID,self.PWD,sybaseiq_ipport[0],sybaseiq_ipport[1],table_columns)
os.system(load_sql)

# 处理生成的表字段文件
columns_sql = '''
cat /tmp/table_name.log | sed "s/'//g" | awk '{printf "%s,",$0}'| sed 's/,$//g'
'''
result = Popen(columns_sql,shell=True,stdout=PIPE,stderr=PIPE)
right_info = result.stdout.read().strip('\xef|\xbb|\xbf')
err_info = result.stderr.read()

loadsql = '''
load table %s.cpms_area_user
(
%s
)
USING FILE '%s'
FORMAT ASCII
ESCAPES OFF
QUOTES OFF
NOTIFY 1000000
DELIMITED BY '%s'
WITH CHECKPOINT ON;
COMMIT;
'''%(stage_schema, right_info, ftp_stage_absolute_filename, delimiter_type_id)

try:
iserr = 0
print "*************Begin to execute load table command...*************\n"
if self.debug == 1:
self._printinfo(loadsql.strip())
#self.cursor.execute(loadsql.strip())
loadsql='''dbisql -c "uid=%s;pwd=%s" -Host %s -port %s -nogui "%s"'''%(self.UID,self.PWD,sybaseiq_ipport[0],sybaseiq_ipport[1],loadsql)
os.system(loadsql)
print "\n*************End to execute load table command...*************"
print "**************************Successful**************************"
except Exception,err:
iserr = 1
print "Return value %s,Error %s" % (iserr,err)

return iserr
#Main
def main():
# 检查传入参数个数
if len(sys.argv) < 6 :
print 'usage: python SybaseIQ_LoadData.py SybaseDSN username password ftp_id cur_static_time\n'
sys.exit(1)

# 定义连接Sybase IQ的信息
dbinfo = []
#dbinfo.append('SybaseIQDSN')
#dbinfo.append('jiang')
#dbinfo.append('jiang')
dbinfo.append(sys.argv[1])
dbinfo.append(sys.argv[2])
dbinfo.append(sys.argv[3])

ftp_id = sys.argv[4]
cur_static_time = sys.argv[5]

SIQ = SybaseIQLoad(dbinfo)
ret = SIQ.loaddata(ftp_id,cur_static_time)
return ret
if __name__ == '__main__':
sys.exit(main())



首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇dataguard主库检测脚本 下一篇PostgreSQL启动过程中的那些事五..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: