国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

使用python將mdb數(shù)據(jù)庫(kù)文件導(dǎo)入postgresql數(shù)據(jù)庫(kù)示例

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:38:50
文檔

使用python將mdb數(shù)據(jù)庫(kù)文件導(dǎo)入postgresql數(shù)據(jù)庫(kù)示例

使用python將mdb數(shù)據(jù)庫(kù)文件導(dǎo)入postgresql數(shù)據(jù)庫(kù)示例:mdb格式文件可以通過mdbtools工具將內(nèi)中包含的每張表導(dǎo)出到csv格式文件。由于access數(shù)據(jù)庫(kù)和postgresQL數(shù)據(jù)庫(kù)格式上會(huì)存在不通性,所以使用python的文件處理,將所得csv文件修改成正確、能識(shí)別的格式。 導(dǎo)入腳本說明(此腳本運(yùn)行于linux): 1.apt
推薦度:
導(dǎo)讀使用python將mdb數(shù)據(jù)庫(kù)文件導(dǎo)入postgresql數(shù)據(jù)庫(kù)示例:mdb格式文件可以通過mdbtools工具將內(nèi)中包含的每張表導(dǎo)出到csv格式文件。由于access數(shù)據(jù)庫(kù)和postgresQL數(shù)據(jù)庫(kù)格式上會(huì)存在不通性,所以使用python的文件處理,將所得csv文件修改成正確、能識(shí)別的格式。 導(dǎo)入腳本說明(此腳本運(yùn)行于linux): 1.apt

mdb格式文件可以通過mdbtools工具將內(nèi)中包含的每張表導(dǎo)出到csv格式文件。由于access數(shù)據(jù)庫(kù)和postgresQL數(shù)據(jù)庫(kù)格式上會(huì)存在不通性,所以使用python的文件處理,將所得csv文件修改成正確、能識(shí)別的格式。

導(dǎo)入腳本說明(此腳本運(yùn)行于linux):

1.apt-get install mdbtools,安裝mdbtools工具

2.將mdb 文件拷貝到linux虛擬機(jī)中,修改腳本中mdb文件目錄‘dir'

3.修改服務(wù)器及數(shù)據(jù)庫(kù)配置

4.執(zhí)行腳本

代碼如下:


# -*- encoding: utf-8 -*-
import os
import re
import psycopg2
import csv

#mdb文件目錄
dir = r'/home/kotaimen/mdb_file/'
mdb_tbl_dic = {}


def make_create_sql():
if os.path.isfile(dir + 'create.sql'):
os.remove(dir + 'create.sql')


for mdb_file in os.walk(dir):
if len(mdb_file[2]) >0:
for file_p in mdb_file[2]:
if file_p[-3:] == 'mdb':
print file_p
cmd = 'mdb-schema %s >>/home/kotaimen/mdb_file/create.sql'
cmd = cmd % (dir + file_p)
print cmd
os.system(cmd)
cmd = 'mdb-tables -1 %s ' % (dir + file_p)
val = os.popen(cmd).read()
mdb_tbl_dic[file_p] = val.split('\n')
print mdb_tbl_dic

def modefy_create_sql():
sql_file_name = dir + 'create.sql'
sql_file_name_des = sql_file_name + '_new'
fobj = open(sql_file_name, 'r')
fobj_des = open(sql_file_name_des, 'w')
for eachline in fobj:
#判斷表名中是否含有空格
if eachline.find('TABLE ') >= 0:
if eachline.find(';') >= 0:
start_loc = eachline.find('TABLE ') + 6
end_loc = eachline.find(';')
tbl_name = eachline[start_loc:end_loc]
eachline = eachline.replace(tbl_name, '"' + tbl_name + '"')
else:
start_loc = eachline.find('TABLE ') + 6
end_loc = eachline.find('\n')
tbl_name = eachline[start_loc:end_loc]
eachline = eachline.replace(tbl_name, '"' + tbl_name + '"')

if eachline.find('DROP TABLE') >= 0 :
eachline = eachline.replace('DROP TABLE', 'DROP TABLE IF EXISTS')
if eachline.find('Table') >= 0 :
eachline = eachline.replace('Table', '"Table"')
#create 語(yǔ)句,最后一行沒有逗號(hào)
if eachline.find('Text ') >= 0 and eachline.find(',') >0:
loc = eachline.find('Text ')
eachline = eachline[0:loc] + ' Text,\n'
elif eachline.find('Text ') >= 0 and eachline.find(',') < 0:
loc = eachline.find('Text ')
eachline = eachline[0:loc] + ' Text \n'
fobj_des.writelines(eachline)
fobj.close()
fobj_des.close()
os.remove(sql_file_name)
os.rename(sql_file_name_des, sql_file_name)

def make_insert_csv():
for file_p in mdb_tbl_dic.keys():
for tbl in mdb_tbl_dic[file_p]:
if len(tbl) >0:
cmd = 'mdb-export %s %s >%s.csv' % (dir + file_p, '"' + tbl + '"', dir + '"' + tbl + '"')# tbl.replace(' ', '_').replace('&', '_'))
os.system(cmd)

def modefy_insert_CSV():
for sql_file in os.walk(dir):
if len(sql_file[2]) >0:
for file_p in sql_file[2]:
if file_p[-3:] == 'csv' :
sql_file_name = dir + file_p
sql_file_name_des = sql_file_name + '_new'
fobj = open(sql_file_name, 'r')
fobj_des = open(sql_file_name_des, 'w')
for (num, val) in enumerate(fobj):
eachline = val
if num == 0:
col_list = eachline.split(',')
stat = 'COPY ' + '"' + (file_p[0:-4]) + '"' + ' (' #+ ('%s,'*len(line))[:-1]+')'
for col in col_list:
if col == 'Table':
col = '"' + 'Table' + '"'
if col.find('\n') >= 0:
col.replace('\n', '')
stat = stat + col + ','
stat = stat[:-2] + ')' + ' FROM STDIN WITH CSV ;\n'
eachline = stat

fobj_des.writelines(eachline)
fobj.close()
fobj_des.close()
os.remove(sql_file_name)
os.rename(sql_file_name_des, sql_file_name)


def insert_into_database():

cmd = 'psql -h 172.26.11.205 -d ap_MapMyIndia_full_Sample -U postgres -f %s 2>>log.txt' % (dir + 'create.sql')
os.system(cmd)

for sql_file in os.walk(dir):
if len(sql_file[2]) >0:
for file_p in sql_file[2]:
print file_p
if file_p[-3:] == 'csv' :
cmd = 'psql -h 172.26.11.205 -d ap_MapMyIndia_full_Sample -U postgres -f %s 2>>log.txt' % (dir + '"' + file_p + '"')
os.system(cmd)


if __name__ == "__main__":
#1.制作mdb文件中所包含TABLE的create腳本
make_create_sql()
#2.修改掉create腳本中的不合法字符
modefy_create_sql()
#3.將mdb中各表導(dǎo)出到csv文件中
make_insert_csv()
#4.修改csv腳本首行,改成copy形式
modefy_insert_CSV()

insert_into_database()

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

使用python將mdb數(shù)據(jù)庫(kù)文件導(dǎo)入postgresql數(shù)據(jù)庫(kù)示例

使用python將mdb數(shù)據(jù)庫(kù)文件導(dǎo)入postgresql數(shù)據(jù)庫(kù)示例:mdb格式文件可以通過mdbtools工具將內(nèi)中包含的每張表導(dǎo)出到csv格式文件。由于access數(shù)據(jù)庫(kù)和postgresQL數(shù)據(jù)庫(kù)格式上會(huì)存在不通性,所以使用python的文件處理,將所得csv文件修改成正確、能識(shí)別的格式。 導(dǎo)入腳本說明(此腳本運(yùn)行于linux): 1.apt
推薦度:
標(biāo)簽: 導(dǎo)入 python mdb
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 一级全黄60分钟免费网站 | 久久久这里有精品999 | 国产不卡一区二区三区免费视 | 日韩经典一区 | 一区二区三区91 | 精品欧美一区手机在线观看 | 国产福利一区二区三区在线视频 | 国产区免费在线观看 | 久久精品最新免费国产成人 | 国产产一区二区三区久久毛片国语 | 亚洲日本乱码中文论理在线电影 | 天天伊人| 亚洲欧美综合网 | 欧美极品一区 | 亚洲精品98久久久久久中文字幕 | 欧美成人精品高清在线播放 | 国产在线视欧美亚综合 | 国产精品九九久久精品女同 | 在线日韩欧美一区二区三区 | 亚洲欧美韩国 | 成人欧美一区二区三区视频 | 特黄一级毛片 | 国产男女无遮挡猛进猛出 | 国产一区二区三区在线视频 | bb毛片| 先锋影音制服丝袜 | 日韩欧美高清在线 | 日本一区二区三区在线观看 | 成人一区二区免费中文字幕 | 欧美日韩国产一区二区 | 囗交免费毛片 | 国产亚洲精品sese在线播放 | 精品日韩一区二区三区视频 | 欧美综合在线观看 | 欧美韩日| 明星国产欧美日韩在线观看 | 亚洲国产97在线精品一区 | 一区二区三区福利 | 自拍 欧美 在线 综合 另类 | 欧美精品亚洲精品日韩专区va | 亚洲视频在线免费播放 |