从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”来创建数据表,命令如下:

```sql
CREATE 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代码示例:

```python
import 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数据库中的数据表中。可以根据自己的需求进行修改和拓展。


数据运维技术 » 从ACC数据库到MySQL的迁移之路(acc数据库转mysql)