MySQL表数据转换到SQL Server

流程图

gantt
    title 数据转换流程

    section 数据提取
        任务1: MySQL数据提取     :a1, 2022-01-01, 4d
        任务2: 数据导出为CSV文件 :a2, after a1, 4d
    
    section 数据导入
        任务3: SQL Server数据导入 :a3, after a2, 4d

步骤说明

步骤 描述
1. 数据提取 从MySQL数据库中提取表数据,并导出为CSV文件
2. 数据导入 将CSV文件中的数据导入到SQL Server中的相应表

详细步骤及代码

数据提取

  1. 连接到MySQL数据库:
```python
import mysql.connector

# 连接到MySQL数据库
conn_mysql = mysql.connector.connect(
    user='username',
    password='password',
    host='localhost',
    database='database_name'
)

2. 查询MySQL表数据:

```markdown
```python
# 创建游标对象
cursor_mysql = conn_mysql.cursor()

# 执行查询语句
query = "SELECT * FROM table_name"
cursor_mysql.execute(query)

# 获取查询结果
result = cursor_mysql.fetchall()

3. 关闭MySQL数据库连接:

```markdown
```python
# 关闭游标和连接
cursor_mysql.close()
conn_mysql.close()

4. 将查询结果导出为CSV文件:

```markdown
```python
import csv

# 指定CSV文件路径
filename = 'data.csv'

# 将查询结果写入CSV文件
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow([i[0] for i in cursor_mysql.description])  # 写入表头
    writer.writerows(result)  # 写入数据行

### 数据导入

1. 连接到SQL Server数据库:

```markdown
```python
import pyodbc

# 连接到SQL Server数据库
conn_sqlserver = pyodbc.connect(
    'DRIVER={SQL Server};'
    'SERVER=server_name;'
    'DATABASE=database_name;'
    'UID=username;'
    'PWD=password;'
)

2. 创建SQL Server表:

```markdown
```python
# 创建游标对象
cursor_sqlserver = conn_sqlserver.cursor()

# 创建表的SQL语句
create_table_sql = """
CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
)
"""

# 执行创建表的SQL语句
cursor_sqlserver.execute(create_table_sql)

# 提交事务
conn_sqlserver.commit()

3. 导入CSV文件数据到SQL Server表:

```markdown
```python
# 打开CSV文件
with open(filename, 'r', encoding='utf-8') as csvfile:
    csvdata = csv.reader(csvfile)
    next(csvdata)  # 跳过表头

    # 构建插入数据的SQL语句
    insert_sql = """
    INSERT INTO table_name (column1, column2, ...)
    VALUES (?, ?, ...)
    """

    # 逐行插入数据
    for row in csvdata:
        cursor_sqlserver.execute(insert_sql, row)

    # 提交事务
    conn_sqlserver.commit()

4. 关闭SQL Server数据库连接:

```markdown
```python
# 关闭游标和连接
cursor_sqlserver.close()
conn_sqlserver.close()

## 总结

本文介绍了将MySQL表数据转换为SQL Server的方法,包括数据提取和数据导入两个步骤。在数据提取阶段,我们首先连接到MySQL数据库,然后执行查询语句获取数据,并将结果导出为CSV文件。在数据导入阶段,我们连接到SQL Server数据库,创建相应的表,然后逐行读取CSV文件中的数据,插入到SQL Server表中。

这个过程需要使用MySQL的Python驱动程序(如`mysql-connector-python`)和SQL Server的Python驱动程序(如`pyodbc`)。通过以上步骤,你可以成功将MySQL表数据转换到SQL Server中。