使用.NET在SYBASE中批量插入

时间:2011-11-16 22:48:43

标签: ado.net sybase bulkinsert

如何在.NET中使用SYBASE表中的数组插入批量数据。我不想使用BCP实用程序。

4 个答案:

答案 0 :(得分:1)

有点不整洁 您必须使用sp_dboption将其打开 然后你可以使用Select Into来获取数据 你再次关闭选项。 还建议你的drop all之前触发索引等,然后把它们放回去进行任何'冗长的操作...

你是如何联系的,如果你使用ODBC,你可能会有一些乐趣,因为它往往会破坏专有的东西,除非你通过直通。

发现这一点,fater在使用delphi和sybase时记住类似的问题

Sybase Manual

答案 1 :(得分:0)

您可以看到this示例以了解如何执行insert语句。 然后,您只需要:

  1. 一次选择excel的每一行
  2. 构建插入命令
  3. 执行它
  4. (最佳方式)

    1. 使用多行(不是全部!每次可能50次)构建一个插入命令
    2. 执行命令
    3.   

      一方面注意,这将花费更多时间来做简单的事情   公牛副本!

答案 2 :(得分:0)

经过这么多调查,我发现DataAdapter能够批量插入。它有属性batchsize(我忘了名字)。我们可以指定要在一次行程中插入的行数。应指定DataAdapter插入命令。

答案 3 :(得分:0)

Sybase.AdoNet2.AseClient.dll中名称空间Sybase.Data.AseClient中有AseBulkCopy类

DataTable dt = SourceDataSet.Tables[0];

using (AseBulkCopy bulkCopy = new AseBulkCopy((AseConnection)conn))
                    {
                        bulkCopy.BatchSize = 10000;
                        bulkCopy.NotifyAfter = 5000;
                        bulkCopy.AseRowsCopied += new AseRowsCopiedEventHandler(bc_AseRowsCopied);
                        bulkCopy.DestinationTableName = DestTableName;

                        bulkCopy.ColumnMappings.Add(new AseBulkCopyColumnMapping("id", "id");

                        bulkCopy.WriteToServer(dt);
                    }


        static void bc_AseRowsCopied(object sender, AseRowsCopiedEventArgs e)
        {
            Console.WriteLine(e.RowCopied + "Copied ....");
        }