从ACC数据库到MySQL的迁移之路(acc数据库转mysql)
从ACC数据库到MySQL的迁移之路
Access是微软公司推出的一款关系型数据库管理系统,它是一种基于文件的数据库系统,用户可以通过简单的拖拽和编辑操作就可以完成数据库的设计,而MySQL是开源关系型数据库管理系统,是目前世界上最为流行的开源数据库之一。由于Access数据库的局限性和MySQL的开放性和可扩展性,越来越多的用户选择将自己的Access数据库迁移到MySQL数据库上。
本文将介绍如何将自己的Access数据库迁移到MySQL数据库上,并给出相关代码。
第一步:从Access数据库导出数据
在Access数据库中,选中需要导出的数据表,然后在菜单栏中选择“外部数据”→“纯文本文件”,此时弹出“导出文本文件”窗口,选择数据导出的位置和文件名,选择文件类型为“以逗号分隔的文本文件”,并勾选“在第一行中加入列标题”,如下图所示:
![image-20210701170427334](https://cdn.jsdelivr.net/gh/chenyansong1/cdn/img/20210701190456.png)
点击“确定”按钮,即可将Access数据库中的数据导出到一个以逗号分隔的文本文件中。将所有需要导出的表都重复该操作。
第二步:创建MySQL数据库
在MySQL数据库中,创建一个新的数据库,可以使用MySQL自带的命令行工具“mysql”来创建数据库,命令如下:
“`sql
CREATE DATABASE db_name;
其中,“db_name”表示数据库名称,可以自己定义。
第三步:创建MySQL数据表
在MySQL数据库中,创建对应的数据表,可以使用MySQL自带的命令行工具“mysql”来创建数据表,命令如下:
```sqlCREATE TABLE table_name (
column1 datatype, column2 datatype,
column3 datatype, .....
);
其中,“table_name”表示数据表名称,“column1”、“column2”、“column3”等表示数据表的列名,“datatype”表示数据表的数据类型。
第四步:将数据导入到MySQL数据库
在MySQL数据库中,将第一步中导出的以逗号分隔的文本文件导入到对应的数据表中,可以使用MySQL自带的命令行工具“mysqlimport”来导入数据,命令如下:
“`sql
mysqlimport -u username -p password -h host db_name table_name.txt
其中,“username”、“password”、“host”分别为MySQL数据库的用户名、密码和主机名,“db_name”表示需要导入数据的数据库名称,“table_name.txt”表示需要导入数据的以逗号分隔的文本文件名称。
通过以上四个步骤,就可以将Access数据库中的数据迁移到MySQL数据库上了。同时也可以使用一些工具来实现数据迁移的自动化,如使用Python编写脚本来实现数据的快速迁移。
Python代码示例:
```pythonimport os
import subprocess
ACCESS_DB_FILE = "access_db_path"MYSQL_USER = "mysql_user"
MYSQL_PASSWORD = "mysql_password"MYSQL_HOST = "mysql_host"
MYSQL_DB_NAME = "mysql_db_name"
# 导出Access数据库中的数据表def export_access_db_table(table_name):
cmd = ' '.join([ 'echo',
'|$Path = "%s"' % ACCESS_DB_FILE, '|$TableName = "%s"' % table_name,
'|$CSVFile = "%s.csv"' % table_name, '|$SQL = "SELECT * FROM [$TableName];"',
'|$Conn = New-Object System.Data.OleDb.OleDbConnection', '|$Conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$Path;Persist Security Info=False;"',
'|$Conn.Open()', '|$Adapter = New-Object System.Data.OleDb.OleDbDataAdapter($SQL, $Conn)',
'|$Dataset = New-Object System.Data.DataSet', '|$Adapter.Fill($Dataset)',
'|$Dataset.Tables[0] | Export-Csv $CSVFile -NoTypeInformation' ])
subprocess.check_call(['powershell', cmd])
# 导入数据到MySQL数据库中的数据表def import_to_mysql_table(table_name):
csv_file = f"{table_name}.csv" cmd = ' '.join([
'mysqlimport', f'-u {MYSQL_USER}',
f'-p{MYSQL_PASSWORD}', f'--host={MYSQL_HOST}',
f'--fields-terminated-by=,', f'{MYSQL_DB_NAME}',
f'{csv_file}' ])
subprocess.check_call(['powershell', cmd])
if __name__ == '__mn__': tables = ['table1', 'table2']
for table in tables: export_access_db_table(table)
import_to_mysql_table(table) os.remove(f"{table}.csv")
上述Python代码实现了将Access数据库中的数据表导出为以逗号分隔的文本文件,然后导入到MySQL数据库中的数据表中。可以根据自己的需求进行修改和拓展。