提高效率,使用CSV多次导入MySQL(csv多次导入mysql)
提高效率,使用CSV多次导入MySQL
随着数据量不断增加,如何有效地将数据导入MySQL数据库中成为了一个重要的问题。而CSV文件作为一种简单、易读的格式,已经成为数据交换的标准之一。将CSV文件多次导入MySQL数据库中,可以快速便捷地完成数据导入的任务,提高效率,本文将介绍如何使用CSV多次导入MySQL。
1. 如何准备CSV文件
CSV文件包含多个字段,每个字段之间用逗号隔开,每行数据表示一条记录,字段之间的顺序必须与表中的顺序一致。
例如,需要导入以下学生表的数据:
| id | name | gender | age |
| —- | ——— | —— | —- |
| 1 | Tom | Male | 18 |
| 2 | Mary | Female | 20 |
| 3 | John | Male | 19 |
| 4 | Sarah | Female | 21 |
| 5 | James | Male | 22 |
则对应的CSV文件如下:
1,Tom,Male,18
2,Mary,Female,203,John,Male,19
4,Sarah,Female,215,James,Male,22
2. 如何使用LOAD DATA INFILE导入CSV数据
LOAD DATA INFILE是MySQL用于从文件中导入数据的命令。通过该命令可以将CSV文件中的数据批量插入到数据库表中。
语法如下:
LOAD DATA INFILE 'file_name' INTO TABLE table_name [FIELDS TERMINATED BY ',' [OPTIONALLY] ENCLOSED BY 'char'
LINES TERMINATED BY '\n' [IGNORE number LINES] [(col1, col2, col3,...)]
其中,file_name为CSV文件的绝对路径,table_name是要导入数据的表名,FIELDS TERMINATED BY ‘,’ 表示字段之间的分隔符为逗号,LINES TERMINATED BY ‘\n’ 表示换行符为换行符号,IGNORE number LINES 表示忽略前number个行,(col1, col2, col3,…) 表示指定要导入的列,可以不指定。
例如,将上述示例中的CSV文件导入名为student的表中,可以使用以下命令:
LOAD DATA INFILE 'D:/student.csv' INTO TABLE student
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
3. 如何批量导入多个CSV文件
对于大数据量表,CSV文件可能会分成多个文件进行存储,如何批量导入多个CSV文件成为了一个难点。
在Linux系统下可以使用shell脚本实现自动化导入。在Windows系统下可以使用PowerShell脚本实现。
以下是PowerShell示例代码:
“`powershell
$Connection = New-Object System.Data.SqlClient.SqlConnection
$Connection.ConnectionString = “Data Source=
$Connection.Open()
$Folder = ‘
$Files = Get-ChildItem -Path $Folder -Filter *.csv #获取所有CSV文件
ForEach ($File in $Files) {
$FileName = $File.FullName
$BulkCopy = New-Object System.Data.SqlClient.SqlBulkCopy($Connection)
$BulkCopy.DestinationTableName = “student”
$BulkCopy.ColumnMappings.Add(0, “id”) #表中的列与CSV文件中的列对应
$BulkCopy.ColumnMappings.Add(1, “name”)
$BulkCopy.ColumnMappings.Add(2, “gender”)
$BulkCopy.ColumnMappings.Add(3, “age”)
$BulkCopy.WriteToServer((Get-Content $FileName))
}
以上代码实现了将CSV文件中的数据批量导入名为student的表中。可根据实际情况修改代码。
使用CSV多次导入MySQL可以高效地完成数据导入任务,提高了工作效率。本文介绍了如何准备CSV文件,如何使用LOAD DATA INFILE导入CSV数据,以及如何批量导入多个CSV文件的方法。希望对大家有所帮助。