【问题标题】:Is it possible to use sql server bulk insert without a file?是否可以在没有文件的情况下使用 sql server 批量插入?
【发布时间】:2011-04-09 08:34:38
【问题描述】:

好奇这是否可能:应用服务器和数据库服务器位于不同的地方(显然)。应用服务器当前生成一个文件以用于 sql server 批量插入。

这要求数据库和应用服务器都能够看到位置,这使得在不同环境下的配置更加困难。

我想知道的是:在这种情况下是否可以绕过文件系统?也许我可以将数据传递给 sql server 并让它生成文件?

我使用的是 sql server 2008,如果这有什么不同的话。

谢谢!

【问题讨论】:

    标签: sql sql-server bulkinsert


    【解决方案1】:

    我认为您不能使用 SQL Server 的 bulkcp 工具来做到这一点,但如果您的应用程序是使用 .NET 编写的,您可以使用 System.Data.SqlClient.SqlBulkCopy 类从数据表(或您可以使用 SqlDataReader 访问的任何数据源)。

    【讨论】:

    • 你的意思是IDataReader
    • 补充一点:通过从数组中读取信息,让一个类实现 iDataReader 非常容易。如果您想在 SQL 数据库中存储大量存储在数组中的信息,这是一个很好的方法。
    • @Slaks,是的,我说得太具体了。
    • 这太完美了。我现在正在使用它并获得了巨大的性能提升。
    【解决方案2】:

    来自批量插入的文档:

    BULK INSERT 
       [ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ] 
          FROM 'data_file' 
    

    FROM 'data_file' 不是可选的,它是这样指定的:

    '数据文件' 是包含要导入的数据的数据文件的完整路径 指定的表或视图。批量插入 可以从磁盘导入数据(包括 网络、软盘、硬盘和 等等)。

    data_file 必须指定一个有效的路径 从 SQL Server 所在的服务器 跑步。如果 data_file 是远程 文件,指定通用命名 约定 (UNC) 名称。 UNC 名称具有 表格 \系统名\共享名\路径\文件名。 例如, \SystemX\DiskZ\Sales\update.txt。

    您的应用程序可以使用满足您性能需求的任何方法直接进行插入。

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 2018-08-06
      • 2013-02-02
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多