日期:2014-05-16  浏览次数:20387 次

通过Load table命令将数据文件加载到Sybase IQ数据库里面的Python脚本

CREATE TABLE poc_app.sys_ftp_cfg
(
    ftp_id              varchar(100) NOT NULL,          --话单文件名标记
    ftp_cycle_id        varchar(1) NOT NULL,            --话单文件名周期
    ftp_stage_filepath  varchar(255) NOT NULL,          --话单处理后路径
    ftp_stage_filereg   varchar(100) NOT NULL,          --话单处理后名称格式
    stage_schema        varchar(100) NOT NULL,          --schema名称
    table_name          varchar(100) NOT NULL,          --表名
    delimiter_type_id varchar(10) NOT NULL              --分隔符
);
 
insert into poc_app.sys_ftp_cfg
values('jiang_test_d','D','/home/sybase/day','jiang_test_[YYYYMMDD].dat','poc_app','jiang_test','|');


#!/usr/bin/python

#-*- encoding: utf-8 -*-
####################################################################################
# name:     SybaseIQ_LoadData.py
# describe: 通过Load table命令将数据文件加载到Sybase IQ数据库里面
####################################################################################
import os
import pyodbc
import string
import sys
from subprocess import Popen,PIPE
import ConfigParser
reload(sys)
sys.setdefaultencoding('utf8')

'''
将数据文件加载到Sybase IQ数据库里面
'''
class SybaseIQLoad:
    debug = 0
    def __init__(self,dbinfo):
        self.UID = dbinfo[1]
        self.PWD = dbinfo[2]
        odbcinfo    = 'DSN=%s;UID=%s;PWD=%s'%(dbinfo[0],dbinfo[1],dbinfo[2])
        self.cnxn   = pyodbc.connect(odbcinfo,autocommit=True,ansi=True)
        self.cursor = self.cnxn.cursor()

    def __del__(self):
        if self.cursor:
            self.cursor.close()
        if self.cnxn:
            self.cnxn.close()

    def _printinfo(self,msg):
        print "%s"%(msg)
        print "\n"

    def _GetStageName(self,ftp_stage_filereg,ftp_cycle_id,cur_static_time):
        if ftp_cycle_id.lower() == 'h':
            ftp_stage_filename = ftp_stage_filereg.replace('[YYYYMMDDHH]',cur_static_time[0:10])            
        if ftp_cycle_id.lower() == 'd':
            ftp_stage_filename = ftp_stage_filereg.replace('[YYYYMMDD]',cur_static_time[0:8])
        if ftp_cycle_id.lower() == 'w':
            ftp_stage_filename = ftp_stage_filereg.replace('[YYYY_WW]',cur_static_time[0:7])
      &n