这里是用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岁的员工数据,然后将其插入到数据库表中。