SSIS批量导入具有不同列名的文件

时间:2017-09-10 15:07:12

标签: sql-server c# ssis

问题。

我经常收到包含不同列的文件。虽然列名称是一致的,但是当某些文本文件具有更多或更少列时会出现问题。

此外,这些文件的排列不一致,我想导入数据库表中每个文件的所有内容。

我尝试使用ssis包导入它们但是当它必须导入其他文件时仍然失败,我该如何导入这些文件。

这是可能的,还是我在浪费时间?我对ssis很新。

文件1

Name|Surname|ID|Address

文件2

Name|Surname|Address|Spouse|Work|Child1|Child2

导入后的数据库表

Name|Surname|ID|Address|Spouse|Work|Child1|Child2

在顶部只是一个简单的例子,但原始文件的列数要复杂得多。

1 个答案:

答案 0 :(得分:1)

将文件内容插入SQL Server数据库的最简单方法是使用Bulk Insert进程

以下是popular article

的示例
BULK INSERT EmployeeDB.dbo.Employees
FROM 'C:\Data\EmployeeData_c.dat'
WITH
  (
    DATAFILETYPE = 'char',
    FIELDTERMINATOR = '|',
    ROWTERMINATOR = '\r\n'
  );

由于您的文件格式不同,最简单的方法之一如下:

(1)对于每种文件格式,都有一个表格。你可以称之为临时表。

(2)您将文件内容批量插入此临时表

(3)在批量插入此临时表后,您可以插入主表

您可以使用SQLCMD等命令行工具来实现上述目标。您也可以通过SSIS实施。通常,如果您希望对文件进行更复杂的处理,则可以访问SSIS。在您的情况下,优先使用命令行工具本身。