python读取csv文件存入数据库
时间: 2024-12-31 07:31:20 浏览: 11
### 使用Python将CSV文件数据导入MySQL数据库
为了实现这一目标,可以采用多种方法。一种常见的方式是利用`pandas`库来处理CSV文件,并借助`SQLAlchemy`和`PyMySQL`连接并操作MySQL数据库。
#### 方法一:使用Pandas与SQLAlchemy组合
这种方法适合于大多数情况下的CSV文件读取与写入数据库的操作:
```python
import pandas as pd
from sqlalchemy import create_engine
# 创建引擎对象用于连接数据库
engine = create_engine('mysql+pymysql://username:password@localhost/dbname')
# 读取CSV文件至DataFrame
df = pd.read_csv("path/to/your.csv")
# 将DataFrame中的数据保存到指定表内
df.to_sql(name='target_table', con=engine, if_exists='append', index=False)
```
上述代码片段展示了如何创建一个能够访问特定MySQL实例的引擎对象;接着加载本地磁盘上的CSV文件进入内存作为临时性的表格结构——即`DataFrame`;最后一步则是把该表格的内容追加到已存在的关系型数据库表里[^1]。
#### 方法二:逐行解析CSV并通过SQL语句插入记录
对于非常大的CSV文件来说,可能更倾向于手动控制每条记录的插入过程以优化性能或适应特殊需求:
```python
import csv
import pymysql.cursors
connection = pymysql.connect(host='localhost',
user='root',
password='',
db='testdb',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
# 执行 SQL 查询
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
with open('data.csv') as csvfile:
reader = csv.reader(csvfile)
next(reader) # 跳过标题行
for row in reader:
cursor.execute(sql, (row[0], row[1]))
# 提交更改
connection.commit()
finally:
connection.close()
```
这段脚本首先建立了同MySQL服务器的安全链接,随后定义了一条简单的插入命令模板。之后打开待处理的目标CSV文档,忽略首行列名后遍历剩余各行内容并向数据库提交新纪录直到完成全部工作为止[^2]。
#### 方法三:直接调用LOAD DATA INFILE指令
如果环境允许的话(比如拥有足够的权限),还可以考虑直接运用MySQL内置的功能快速高效地批量载入外部文本文件内的资料集:
```sql
LOAD DATA LOCAL INFILE '/full/path/of/data.csv'
INTO TABLE target_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;
```
此方式通常被认为是最简洁有效的途径之一,因为它几乎不需要额外编写任何应用程序逻辑就能达成目的。不过需要注意的是,在实际应用前应当确认所使用的客户端工具支持这项特性并且配置正确无误[^4]。
阅读全文