小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

利用python把EXCEL文件導(dǎo)入Oracle

 ufo999 2021-09-20
2021-01-28 16:05:10 1點(diǎn)贊

一、數(shù)據(jù)準(zhǔn)備
1、excel數(shù)據(jù)準(zhǔn)備(包含字符串、整數(shù)、小數(shù)、科學(xué)計(jì)數(shù)法、空值)
在這里插入圖片描述
2、oracle建表

CREATE TABLE AM_DC.FXM_TEST (CLO1 VARCHAR2(12), CLO2 NUMBER(8,0), CLO3 NUMBER(36,2), CLO4 NUMBER(36,4),CLO5 VARCHAR2(12));commit;
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

在這里插入圖片描述

二、代碼


注意:必要時(shí)需要先刪除數(shù)據(jù)庫中數(shù)據(jù)再導(dǎo)數(shù)入庫。

#!/usr/bin/env python# -*- coding: utf-8 -*-import cx_Oracleimport csvimport xlrdimport osimport reclass ImportOracle(object):
    def inoracle(self):
        pass

    def ConnOracle(self):
        conn = cx_Oracle.connect('用戶名', '密碼', 'ip:端口/服務(wù)名')
        cursor = conn.cursor()
        # 給字符數(shù)據(jù)加上引號(hào)
        fields = ['\'' i '\'' for i in self.title]
        # 從第一列數(shù)據(jù)開始
        fields_str = ', '.join(fields[0:])
        #print(fields_str)
        for i in self.data:
            print(i)
            # 插入引號(hào),確保格式正確
            a=[ '\'' str(b) '\'' for b in i]
            value = ','.join(a[0:])
            # 去掉數(shù)據(jù)中的[NULL]
            sql = 'insert into %s  values(%s)' % (self.table_name, re.sub('\[Null\] ', '', value))
            # 打印生成的SQL
            print(sql '\n\n\n')
            # 執(zhí)行SQL語句并提交
            cursor.execute(sql)
            conn.commit()
        # 全部提交后關(guān)閉連接,釋放游標(biāo)
        cursor.close()
        conn.close()class ImportOracleCsv(ImportOracle):
    def inoracle(self):
        contents=[]
        with open(self.filename, 'r') as f:
            reader = csv.reader(f)
            # 將科學(xué)計(jì)數(shù)現(xiàn)實(shí)的數(shù)字顯示
            for i in reader:
                contents.append(i)
            # 獲取第一行為列名
            title = contents[0]
            # 獲取數(shù)據(jù),去掉第一行
            data = contents[1:]
        return (title, data)class ImportOracleExcel(ImportOracle):
    def inoracle(self):
        wb = xlrd.open_workbook(self.filename)
        #使用第一個(gè)sheet表
        sheet1 = wb.sheet_by_index(0)
        title = sheet1.row_values(0)
        #獲取第一行作為表頭
        data = [sheet1.row_values(row) for row in range(1, sheet1.nrows)]
        print(data)
        return (title, data)#導(dǎo)入非excel文檔報(bào)錯(cuò)'Undefine file type'class ImportError(ImportOracle):
    def inoracle(self):
        print('Undefine file type')
        return 0class ChooseFactory(object):
    choose = {}
    choose['csv'] = ImportOracleCsv()
    choose['xlsx'] = ImportOracleExcel()
    choose['xls'] = ImportOracleExcel()

    def choosefile(self, ch):
        if ch in self.choose:
            op = self.choose[ch]
        else:
            op = ImportError()
        return opif __name__ ==  '__main__':
    os.chdir(r'C:\\')#改變當(dāng)前工作目錄到指定的路徑
    file_name = 'fxm_test.xlsx'
    table_name = 'fxm_test'
    #獲取文件夾類型
    op = file_name.split('.')[-1]
    factory = ChooseFactory()
    cal = factory.choosefile(op)
    cal.filename = file_name    (cal.title, cal.data) = cal.inoracle()
    cal.table_name = table_name
    cal.ConnOracle()123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596

三、結(jié)果
在這里插入圖片描述
四、參考資料
EXCEL文件導(dǎo)入Oracle(python腳本導(dǎo)入)

打開CSDN,閱讀體驗(yàn)更佳

相關(guān)推薦 更多相似內(nèi)容

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多