【问题标题】:Does Microsoft Jet 4.0 support 64bit integers?Microsoft Jet 4.0 是否支持 64 位整数?
【发布时间】:2013-03-14 15:34:01
【问题描述】:

我有一个 csv 文件,我正在尝试使用 C# .NET 中的 SABulkCopy(Sybase 的 SQLBulkCopy 版本)类将其导入到 Sybase SQL Anywhere 数据库中。 csv 文件的第一列映射到 Sybase DB 中的 64 位整数主键值。其中一列中还有二进制数据(大于 510 字节)。使用 Jet 4.0 OleDB 访问 csv 文件可能不是进行批量插入的最佳方法,但我不知道使用 csv 源文件完成此操作的另一种方法。这样做的重点是避免将所有插入写入日志,因为 blob 数据是可消耗的,但需要快速导入。我正在使用 schema.ini 文件来映射 csv 文件中的数据类型,问题是“Long”数据类型仅适用于 32 位整数。当我将 OleDB DataReader 提供给 SABulkCopy.WriteToServer() 时,这会导致错误,因为 DB 需要一个 64 位整数,而不是 32 位整数。

【问题讨论】:

    标签: c# .net jet sqlanywhere


    【解决方案1】:

    您无法使用 Jet 4.0 执行此操作,但您不需要这样做。您可以在http://www.microsoft.com/en-us/download/details.aspx?id=13255 获得可再发行的 64 位访问引擎。您还需要将连接字符串“Provider”更新为“Microsoft.ACE.OLEDB.12.0”。

    如果无法使用单独安装的引擎,您可以随时进行简单的文件读取并解析出数据like this

    【讨论】:

    • 这就是问题所在。我有点需要使用内置方法来做到这一点,而不是需要额外安装的东西。
    • Jet 4.0 引擎也需要“安装”——这只是您要安装哪个引擎的问题...如果您安装了 Office 2007 或更高版本,那么新引擎已经可以用于联系。无论如何,看看我提供的其他选项是否适合您。
    • 我最终将构成 csv 中 blob 列的实际文件直接导入数据库,从而绕过了处理 csv 文件的需要。不幸的是,SABulkCopy 仍然将插入写入日志,所以我认为没有任何方法可以避免它。
    猜你喜欢
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多