使用c#导入平面文件到SQL server

本文关键字:SQL server 平面文件 导入 使用 | 更新日期: 2023-09-27 18:15:45

我想用c#编写一个程序,将两种类型的文件导入SQL Server:制表符分隔和固定列。实际上,我需要每天下载一个文件,并将该文件导入我的数据库。我可以用批处理脚本制作控制台应用。我看过一些这样的例子,但我不知道这是否是最好的面向对象的方法。

我可以使用StreamReader, Regex等等,但我不想重新发明轮子。

PS:在VBA中,我使用"QueryTables.Add"

使用c#导入平面文件到SQL server

可以通过SqlBulkCopy导入完全托管代码;所有你需要做的是传递给SqlBulkCopy一个IDataReader处理TSV。幸运的是,FastCsvReader在codeproject上可以做到这一点。

如果你不想重新发明轮子,那么你应该看看SQL Server提供的本地工具,即bcp。以下是有关bcp的常见问题解答。

听起来像是SQL Server集成服务(SSIS)的完美工作。您可以很容易地在SSIS中定义数据导入任务,然后通过使用SQL作业安排其运行。

bulk insert [dbo].[CoursesTemp]
从"C: '

用户下载'公共' ' Courses.csv"

with (fieldterminator = ',', rowterminator = ''n')
go
insert [dbo].[Courses]
  (code, description, instructor, date, venue, duration)
select 
   code, description, instructor, cast(date as date), venue,
   duration
from [dbo].[CoursesTemp]