把csv文件写入mysql
时间: 2025-02-24 22:35:06 浏览: 34
### 方法一:使用PHP的`fgetcsv()`函数
可以采用PHP内置的`fgetcsv()`函数来逐行解析CSV文件并将其内容存入数组,之后再将这些数据插入到MySQL数据库中。这种方法适合于需要对每一项记录做额外处理的情况[^1]。
```php
<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$username, $password);
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage());
}
if (($handle = fopen("data.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// 跳过表头
if ($data[0] === 'id') continue;
list($id, $column1, $column2) = $data;
$stmt = $pdo->prepare('INSERT INTO table_name(id, column1, column2) VALUES(:id, :col1, :col2)');
$stmt->execute([':id' => $id, ':col1' => $column1, ':col2' => $column2]);
}
}
fclose($handle);
?>
```
### 方法二:借助Python与Pandas库
对于熟悉Python编程的人来说,利用Pandas库加载CSV文件,并通过SQLAlchemy连接器向MySQL发送查询语句是一种高效便捷的选择。此方法特别适用于那些已经习惯于使用Python进行数据分析工作的开发者群体[^2]。
```python
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:@localhost/test')
df = pd.read_csv('mpg.csv')
df.to_sql(name='table_name', con=engine, index=False, if_exists='append')
```
### 方法三:运用Java批量导入功能
当面对大量数据时,编写一段简单的Java应用程序可能是更好的解决方案。该方案不仅能够快速完成大批量的数据迁移工作,而且还可以方便地集成进现有的企业级应用环境中[^3]。
```java
import java.sql.*;
import java.io.*;
public class CsvToMysql {
public static void main(String[] args){
String url="jdbc:mysql://localhost:3306/test";
try{
Connection conn= DriverManager.getConnection(url,"root","");
BufferedReader br=new BufferedReader(new FileReader("data.csv"));
String line="";
PreparedStatement psmt=null;
while((line=br.readLine())!=null){
String sql="insert into table_name values(?,?,?)";
psmt=conn.prepareStatement(sql);
String[] data=line.split(",");
//跳过首行标题栏
if(data.length>0 && !data[0].equals("id")){
int i=1;
for(String d:data){
psmt.setString(i++,d.trim());
}
psmt.executeUpdate();
}
}
System.out.println("Data inserted successfully");
br.close();
}catch(Exception e){System.out.print(e);}
}
}
```
### 方法四:Shell脚本自动化操作
如果是在Linux环境下作业,则可以通过编写shell脚本来简化整个过程。这种方式非常适合定时任务调度以及批处理场景下的需求满足[^4]。
```bash
#!/bin/bash
DB_USER=root
DB_PASSWD=
DATABASE=test
TABLE_NAME=my_table
while IFS=',' read -r col1 col2 col3
do
mysql --user=${DB_USER} --password=${DB_PASSWD} ${DATABASE} << EOF
INSERT INTO ${TABLE_NAME}(field1, field2, field3) VALUES ('${col1}', '${col2}', '${col3}');
EOF
done < my_file.csv
```
阅读全文
相关推荐

















