使用C#将平面文件导入到SQL服务器

问题描述:

我想在C#中创建一个将两种类型的文件导入SQL Server的程序:制表符分隔列和固定列。实际上,我需要每天下载一个文件并将该文件导入到我的数据库中。我可以使用批处理脚本创建控制台应用程序。我看到一些例子,如this,但我不知道它是否是最好的面向对象的方式来做到这一点。使用C#将平面文件导入到SQL服务器

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

PS: 在VBA中我使用了“QueryTables.Add”。

+0

你能显示哪些文件应该看起来像相关的SQL服务器的格式? – msarchet

+0

请注意,批处理标签“用于Windows批处理文件问题”。不要仅仅因为你的问题以任何方式与“批”字有关... – Aacini

如果您不想重新发明*,那么您应该查看SQL Server为此提供的本机工具,即bcpHere是关于bcp的常见问题列表。

听起来像是SQL Server Integration Services(SSIS)的完美工作。您可以轻松地在SSIS中定义数据导入任务,然后通过使用SQL作业安排它运行。

+0

我正在使用SQL Server 2008 express – Makah

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

+0

我在我的文件中有一些垃圾行。我需要像行模式(正则表达式)。我可以创建一些文件转换器,然后使用SQLBulk – Makah

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]