【问题标题】:Inserting large amounts of data in to a database, avoiding RBAR将大量数据插入数据库,避免 RBAR
【发布时间】:2012-10-06 16:15:44
【问题描述】:

所以我正在编写必须将数千条记录插入 Microsoft Access 的软件。目前我正在使用 JET 的 RBAR(通过痛苦的行)方法。我在 SO 上写了question,然后询问如何加快进程,并被告知使用 DAO 而不是 JET,因为它会更快,并且可以避免 RBAR。

我现在处于准备实施更快解决方案的情况,但是,我还有一些问题。首先是一些简单的事情,有没有人知道 vb.net 中的 DAO 语法的好教程,因为我试图在网上寻找一个但一直在努力。还有人知道要使用的库吗?

其次,避免使用 RBAR 方法将数据插入数据库的最佳方法是什么。我假设这是使用记录集,但我不确定如何实现其中之一,或者一次插入多行所需的 SQL 查询。

最后有人告诉我,ms-access 不是最好的使用方式,它很慢。有没有人对访问的不同替代方案有任何建议?我需要它是一个免费的商业许可证,我知道这是一个延伸。我只使用数据库作为我不需要访问提供的任何用户接口的数据的存储。我在 SO 上找到了一个question 关于这个建议 SQLite、MySQL 或 FireBird。有谁知道这些解决方案与 Access 相比的速度以及它们是否仍可免费用于商业用途。

所以我基本上是在寻找有关如何尽快将大量数据读/写到数据库的建议。任何帮助或建议将不胜感激。

【问题讨论】:

  • 对于大多数应用程序来说,MySQL 是一款出色的全面数据库服务器。它支持批量插入没有问题。当您需要基于文件的数据库时,SQLite 非常适合。它类似于没有真正的服务器处理写入磁盘的 Access。
  • 如果您习惯使用MS access,并且您的需求很少,您可以使用免费的MS SQL Server Express(注意有大小等限制,但是对于小型数据库,这个可能不是问题)。
  • 您要插入的数据的来源是什么?它来自文件吗?不同的数据库?通过将数据作为单个单元操作导入,您可以在没有 RBAR 的情况下将数据导入 Access db 文件。您将使用的具体方法取决于数据源的性质。
  • @Hans,数据通常取自数据库,并在 Visual Basic 前端对其执行操作,然后从数组或列表放回数据库。当数据第一次放入数据库时​​,它来自excel,可以转换为.csv格式。

标签: sql vb.net visual-studio ms-access bulkinsert


【解决方案1】:

使用 MS SQL Express(免费版)进行批量插入:

http://www.sswug.org/articles/viewarticle.aspx?id=35680

基本上涉及使用批量插入语法并传入文件:

BULK INSERT Test..Clients FROM
'c:\TestData.csv'
WITH (
   FIELDTERMINATOR = ',',
   ROWTERMINATOR = '\n'
)

【讨论】:

    【解决方案2】:

    不用访问,看看firebird 它免费且非常可靠。

    Firebird 是一个提供许多 ANSI SQL 标准的关系数据库 在 Linux、Windows 和各种 Unix 平台上运行的功能。 Firebird 提供出色的并发性、高性能和强大的功能 存储过程和触发器的语言支持。它已被使用 自 1981 年以来,在生产系统中以各种名称出现。

    Firebird 项目是 C 和 C++ 程序员、技术顾问和支持者开发和 增强基于多平台的关系数据库管理系统 Inprise Corp(现称为 Borland)发布的源代码 软件公司)于 2000 年 7 月 25 日。

    【讨论】:

    • 我在 Firebird 上快速浏览了该网站,在我看来我必须将 Firebird 作为服务器运行,这是真的吗?我希望将数据库存储在网络驱动器上,并且不让机器负责照看它。
    • 所以你不需要 RDMS,你只需要一个文件 :) 你知道区别吗?如果您只想将文件作为数据库,那么您将无法访问
    • 我不知道区别:P,或者它们需要什么。我想要一些可以放在网络上并保存数据的东西。我不需要任何用户界面,我希望能够让它尽可能地保持独立。将其作为服务器运行是否需要 PC 来保存服务器并处理数据请求?
    • RDMS 是关系数据库管理系统,例如 SQl Server、Oracle 或 Firebird。它们是管理数据文件的服务。访问只是磁盘上的文件
    • 所以对于 Firebird 等,必须像服务器一样运行 Firebird。它不能只是放在磁盘上的文件吗?
    猜你喜欢
    • 2014-08-28
    • 2016-03-22
    • 1970-01-01
    • 2011-09-21
    • 2014-03-11
    • 1970-01-01
    • 2011-05-29
    • 2021-03-31
    • 2015-11-27
    相关资源
    最近更新 更多