用Python将Excel数据导入到SQL Server的例子

  • Post category:Python

这里是用Python将Excel数据导入到SQLServer的完整实例教程。

环境准备

在进行本教程之前,需要安装以下环境和工具:

  • Python解释器,建议使用Python 3.x版本
  • SQL Server数据库

同时还需要安装以下Python库:

  • pandas
  • pyodbc

我们可以通过pip命令来安装这两个库:

pip install pandas pyodbc

连接SQL Server数据库

首先,我们需要建立Python与SQL Server数据库的连接。

import pyodbc

# 建立数据库连接
conn = pyodbc.connect('Driver={SQL Server Native Client 11.0};Server=your_server_name;Database=your_database_name;Uid=your_username;Pwd=your_password;')

在建立连接时,需要根据你自己的SQL Server服务器的名称、数据库名称、用户名和密码来设置连接字符串。

读取Excel数据

接下来,我们需要使用pandas库读取Excel数据。

import pandas as pd

# 读取Excel文件
df = pd.read_excel('data.xlsx')

在读取Excel文件时,需要将Excel文件的路径传递给read_excel函数。

将数据导入SQL Server

最后,我们可以将读取的Excel数据导入到SQL Server中。

# 获取游标对象
cursor = conn.cursor()

# 遍历数据并插入到数据库中
for index, row in df.iterrows():
    insert_sql = "INSERT INTO your_table_name (column1, column2, column3) VALUES (?, ?, ?)"
    cursor.execute(insert_sql, row['column1'], row['column2'], row['column3'])

# 提交事务
conn.commit()

# 关闭连接
conn.close()

在遍历Excel数据时,我们可以使用DataFrame的iterrows方法来依次获取每一行数据,然后将其插入到数据库表中。注意在执行插入操作时,我们使用了参数化的SQL语句,并通过pyodbc的execute函数将数据和SQL语句一起传递给数据库执行。

示例说明

假设我们有一个名为data.xlsx的Excel文件,其中包含了一张名为employee的工作表,工作表的格式如下:

id name age
1 Mike 22
2 Amy 28
3 Tom 33

以下是导入过程的两个示例说明。

示例1

需要将employee工作表中的全部数据导入到SQL Server的employee表中。

import pyodbc
import pandas as pd

# 建立数据库连接
conn = pyodbc.connect('Driver={SQL Server Native Client 11.0};Server=your_server_name;Database=your_database_name;Uid=your_username;Pwd=your_password;')

# 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='employee')

# 获取游标对象
cursor = conn.cursor()

# 遍历数据并插入到数据库中
for index, row in df.iterrows():
    insert_sql = "INSERT INTO employee (id, name, age) VALUES (?, ?, ?)"
    cursor.execute(insert_sql, row['id'], row['name'], row['age'])

# 提交事务
conn.commit()

# 关闭连接
conn.close()

示例2

需要将employee工作表中的年龄大于30岁的员工数据导入到SQL Server的employee表中。

import pyodbc
import pandas as pd

# 建立数据库连接
conn = pyodbc.connect('Driver={SQL Server Native Client 11.0};Server=your_server_name;Database=your_database_name;Uid=your_username;Pwd=your_password;')

# 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='employee')

# 获取游标对象
cursor = conn.cursor()

# 遍历数据并插入到数据库中
for index, row in df[df['age'] > 30].iterrows():
    insert_sql = "INSERT INTO employee (id, name, age) VALUES (?, ?, ?)"
    cursor.execute(insert_sql, row['id'], row['name'], row['age'])

# 提交事务
conn.commit()

# 关闭连接
conn.close()

在示例2中,我们可以在遍历数据时,使用pandas的查询功能,选择年龄大于30岁的员工数据,然后将其插入到数据库表中。