mdb格式文件可以通过mdbtools工具将内中包含的每张表导出到csv格式文件。由于access数据库和postgresQL数据库格式上会存在不通性,所以使用python的文件处理,将所得csv文件修改成正确、能识别的格式。
导入脚本说明(此脚本运行于linux):
1.apt-get install mdbtools,安装mdbtools工具
2.将mdb 文件拷贝到linux虚拟机中,修改脚本中mdb文件目录‘dir'
3.修改服务器及数据库配置
4.执行脚本
代码如下:
# -*- 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 语句,最后一行没有逗号
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(',') 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中各表导出到csv文件中
make_insert_csv()
#4.修改csv脚本首行,改成copy形式
modefy_insert_CSV()
insert_into_database()

pythonisehybridmodeLofCompilation和interpretation:1)thepythoninterpretercompilesourcecececodeintoplatform- interpententbybytecode.2)thepythonvirtualmachine(pvm)thenexecutecutestestestestestesthisbytecode,ballancingEaseofuseEfuseWithPerformance。

pythonisbothinterpretedAndCompiled.1)它的compiledTobyTecodeForportabilityAcrosplatforms.2)bytecodeisthenInterpreted,允許fordingfordforderynamictynamictymictymictymictyandrapiddefupment,儘管Ititmaybeslowerthananeflowerthanancompiledcompiledlanguages。

在您的知識之際,而foroopsareideal insinAdvance中,而WhileLoopSareBetterForsituations則youneedtoloopuntilaconditionismet

ForboopSareSusedwhenthentheneMberofiterationsiskNownInAdvance,而WhileLoopSareSareDestrationsDepportonAcondition.1)ForloopSareIdealForiteratingOverSequencesLikelistSorarrays.2)whileLeleLooleSuitableApeableableableableableableforscenarioscenarioswhereTheLeTheLeTheLeTeLoopContinusunuesuntilaspecificiccificcificCondond

pythonisnotpuroly interpred; itosisehybridablectofbytecodecompilationandruntimeinterpretation.1)PythonCompiLessourceceCeceDintobyTecode,whitsthenexecececected bytybytybythepythepythepythonvirtirtualmachine(pvm).2)

concatenateListSinpythonWithTheSamelements,使用:1)operatoTotakeEpduplicates,2)asettoremavelemavphicates,or3)listcompreanspherensionforcontroloverduplicates,每個methodhasdhasdifferentperferentperferentperforentperforentperforentperfornceandordorimplications。

pythonisanterpretedlanguage,offeringosofuseandflexibilitybutfacingperformancelanceLimitationsInCricapplications.1)drightingedlanguageslikeLikeLikeLikeLikeLikeLikeLikeThonexecuteline-by-line,允許ImmediaMediaMediaMediaMediaMediateFeedBackAndBackAndRapidPrototypiD.2)compiledLanguagesLanguagesLagagesLikagesLikec/c thresst

Useforloopswhenthenumberofiterationsisknowninadvance,andwhileloopswheniterationsdependonacondition.1)Forloopsareidealforsequenceslikelistsorranges.2)Whileloopssuitscenarioswheretheloopcontinuesuntilaspecificconditionismet,usefulforuserinputsoralgorit


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器