通过Jet访问SSIS平面文件

时间:2011-10-02 14:32:56

标签: ssis jet flat-file

有没有办法在SSIS中使用Microsoft.Jet.OLEDB.4.0驱动程序访问FlatFiles?

通过FlatFile Source进行访问要好得多,只是有一种方法可以使用Jet驱动程序。

1 个答案:

答案 0 :(得分:3)

这似乎是一个有趣的问题,所以我对它进行了一些调整。是的,你绝对可以使用JET驱动程序来读取平面文件。 HOW TO: Use Jet OLE DB Provider 4.0 to Connect to ISAM Databases请参阅“打开文本”部分

默认情况下,它希望文件为CSV,但您可以在Schema.INI中指定格式,该格式与连接管理器指向的文件夹位于同一文件夹中。

有关CM的注意事项,它指向文本文件的文件夹,而不是特定文件。

创建Connection Manager时,需要进入“全部”选项卡(选择“本机OLE DB \ Microsoft Jet 4.0 OLE DB提供程序”后),然后添加“扩展属性”。我能够使用CSVDelimit的FMT并且只是Delimited(因为我的示例文件是csv)。

enter image description here

在源文件中交换选项卡的逗号并在TabDelimited中设置FMT似乎在连接管理器属性中不起作用,但我没有尝试按照BOL文章的说明创建schema.ini文件。

  

您无法通过以下方式定义文本文件的所有特征   连接字符串。例如,如果要打开固定宽度   您必须使用文件,或者您想使用逗号以外的分隔符   在Schema.INI文件中指定所有这些设置。

我的CM上的ConnectionString的完整值低于

Data Source=C:\tmp\so\;Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="text;HDR=Yes;FMT=CSVDelimited;";

如果软件包在设计时工作正常,但一旦运行就会出现问题,那么JET驱动程序只能在64位计算机上使用,因为错误信息会指示。

  

SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。   AcquireConnection方法调用连接管理器   “OLEDB_JET”失败,错误代码为0xC0209303。可能有错误   在此之前发布的消息有关于为什么的更多信息   AcquireConnection方法调用失败。

解决方案是在32位模式下从命令行运行它,如

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn>.\dtexec /file C:\sandbox\SSISHackAndSlash\SSISHackAndSlash\so_JetFlatFile.dtsx