如何解决使用 C# 自动导入大型 csv 文件~3gb
我对此有点陌生,但我的目标是将数据从 csv 文件导入到 sql 表中,并为每一行添加附加值,即文件名和日期。我能够使用实体框架工作并遍历文件的每一行来完成此操作,但由于文件的大小,实际完成所需的时间太长。
我正在寻找一种方法来更快地完成此导入。我正在考虑将 csvhelper 与 sqlbulkcopy 一起使用来完成此操作,但不确定是否有办法传入每行所需的附加值。
public void Process(string filePath)
{
InputFilePath = filePath;
DateTime fileDate = DateTime.Today;
string[] fPath = Directory.GetFiles(InputFilePath);
foreach (var file in fPath)
{
string fileName = Path.GetFileName(file);
char[] delimiter = new char[] { '\t' };
try
{
using (var db = new DatabaseName())
{
using (var reader = new StreamReader(file))
{
string line;
int count = 0;
int sCount = 0;
reader.ReadLine();
reader.ReadLine();
while ((line = reader.ReadLine()) != null)
{
count++;
string[] row = line.Split(delimiter);
var rowload = new ImportDestinationTable()
{
ImportCol0 = row[0],ImportCol1 = row[1],ImportCol2 = TryParseNullable(row[2]),ImportCol3 = row[3],ImportCol4 = row[4],ImportCol5 = row[5],IMPORT_FILE_NM = fileName,IMPORT_DT = fileDate
};
db.ImportDestinationTable.Add(rowload);
if (count > 100)
{
db.SaveChanges();
count = 0;
}
}
db.SaveChanges();
//ReadLine();
}
}
}
static int? TryParseNullable(string val)
{
int outValue;
return int.TryParse(val,out outValue) ? (int?)outValue : null;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。