我有制表符分隔的文本文件.文件大约100MB.我想将此文件中的数据存储到SQL Server表.存储在sql server中时,该文件包含100万条记录.实现这一目标的最佳方法是什么?
我可以在c#中的momory数据表中创建,然后将其上传到sql server,但在这种情况下,它会将整个100 MB的文件加载到内存中.如果文件大小变大怎么办?
没问题; CsvReader将处理大多数分隔的文本格式和实现IDataReader,因此可用于提供一个SqlBulkCopy.例如:
using (var file = new StreamReader(path))
using (var csv = new CsvReader(file, true)) // true = first row is headers
using (var bcp = new SqlBulkCopy(connectionString))
{
bcp.DestinationTableName = "Foo";
bcp.WriteToServer(csv);
}
Run Code Online (Sandbox Code Playgroud)
请注意,CsvReader有许多选项更精细的文件处理(指定分隔符规则等).SqlBulkCopy是高性能的批量加载API - 非常高效.这是一个流式读写器API; 它不会立即将所有数据加载到内存中.
| 归档时间: |
|
| 查看次数: |
4161 次 |
| 最近记录: |