我想用 C# 编写一个程序,将两种类型的文件导入 SQL Server:制表符分隔和固定列。实际上,我需要每天下载一个文件并将该文件导入我的数据库。我可以用批处理脚本制作一个控制台应用程序。我看到了一些这样的例子,但我不知道这是否是最好的面向对象的方式。
我可以使用StreamReader
,Regex
等等,但我不想重新发明轮子。
PS:在 VBA 中,我使用了“QueryTables.Add”。
我想用 C# 编写一个程序,将两种类型的文件导入 SQL Server:制表符分隔和固定列。实际上,我需要每天下载一个文件并将该文件导入我的数据库。我可以用批处理脚本制作一个控制台应用程序。我看到了一些这样的例子,但我不知道这是否是最好的面向对象的方式。
我可以使用StreamReader
,Regex
等等,但我不想重新发明轮子。
PS:在 VBA 中,我使用了“QueryTables.Add”。
您可以通过SqlBulkCopy导入完全托管的代码;您需要做的就是向 SqlBulkCopy 传递一个处理 TSV 的 IDataReader。幸运的是,codeproject上的 FastCsvReader 可以做到这一点。
bulk insert [dbo].[CoursesTemp]
来自“C:\Users\Public\Downloads\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]
听起来像是 SQL Server Integration Services (SSIS) 的完美工作。您可以轻松地在 SSIS 中定义数据导入任务,然后使用 SQL 作业安排它运行。