使用python将mdb数据库文件导入postgresql数据库示例
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(',') < 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中各表导出到csv文件中
make_insert_csv()
#4.修改csv脚本首行,改成copy形式
modefy_insert_CSV()
insert_into_database()

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

如何下载 DeepSeek 小米?在小米应用商店搜索“DeepSeek”,如未找到,则继续步骤 2。确定您的需求(搜索文件、数据分析),并找到包含 DeepSeek 功能的相应工具(如文件管理器、数据分析软件)。

有效使用DeepSeek的关键在于清晰提问:直接、具体地表达问题。提供具体细节和背景信息。对于复杂的询问,包含多个角度和反驳观点。关注特定方面,例如代码的性能瓶颈。对得到的答案保持批判性思维,结合专业知识进行判断。

直接使用DeepSeek自带的搜索功能即可,它强大的语义分析算法能准确理解搜索意图,提供相关信息。但对于冷门领域、最新信息或需要思考问题的搜索,需要调整关键词或使用更具体的描述、结合其他实时信息来源,并明白DeepSeek只是一个工具,需要主动、清晰、精细的搜索策略。

DeepSeek并非编程语言,而是深度搜索概念。实现DeepSeek需基于现有语言选择。针对不同应用场景,需要选择合适的语言和算法,并结合机器学习技术。代码质量、可维护性、测试至关重要。根据需求选择合适的编程语言、算法和工具,并编写高质量代码,才能成功实现DeepSeek。

问题:DeepSeek是否可用于会计?回答:不是,它是一个数据挖掘和分析工具,可用于分析财务数据,但本身不具备会计软件的账目记录和报表生成功能。使用DeepSeek分析财务数据需要:编写代码来处理数据具备对数据结构、算法和DeepSeek API的了解考虑潜在的问题(例如,编程知识、学习曲线、数据质量)

Python通过其易学性和强大功能,是初学者的理想编程入门语言。其基础包括:变量:用于存储数据(数字、字符串、列表等)。数据类型:定义变量中数据的类型(整数、浮点数等)。运算符:用于数学运算和比较。控制流:控制代码执行流(条件语句、循环)。

Python 使初学者能够解决问题。其用户友好的语法、广泛的库以及变量、条件语句和循环等功能可实现高效的代码开发。从管理数据到控制程序流程和执行重复任务,Python 提供了

DeepSeekAPI接入与调用详解:快速上手指南本文将详细指导您如何接入和调用DeepSeekAPI,助您轻松使用强大的AI模型。第一步:获取API密钥访问DeepSeek官方网站,点击右上角的“开放平台”。您将获得一定数量的免费Tokens(用于计量API使用量)。在左侧菜单中,点击“APIKeys”,然后点击“创建APIkey”。为您的APIkey命名(例如,“test”),并立即复制生成的密钥。请务必妥善保存此密钥,因为它只会显示一次
