首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SqlBulkCopy Options KeepIdentity

SqlBulkCopy Options KeepIdentity
EN

Stack Overflow用户
提问于 2018-10-11 19:48:19
回答 1查看 4K关注 0票数 1

我试图移动一个表,我喜欢从源中保留标识值,但是目标表保持自动分配唯一标识符。目标表没有记录。是否需要删除目标表标识设置才能正常工作?

代码语言:javascript
运行
复制
// Create the SqlBulkCopy object using a connection string. 
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
                {


                    bulkCopy.DestinationTableName = "Log";
                    bulkCopy.ColumnMappings.Clear();
                    bulkCopy.ColumnMappings.Add("ID", "ID");
                    bulk
                    // How many Rows you want to insert at a time
                    //bulkCopy.BatchSize = 100000;
                    bulkCopy.BatchSize = 500;
                    // Set the timeout.
                    bulkCopy.BulkCopyTimeout = 0;

                    // Set up the event handler to notify after 4500 rows.
                    bulkCopy.SqlRowsCopied +=
                        new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
                    bulkCopy.NotifyAfter = 4500;


                    //(                  2093,000 row(s) affected)
                    //Always stopping at 2093,000
                    try
                    {
                        // INSERT only if row doesn't exist in the destination
                        //bulkCopy.InsertIfNotExists = true;
                        // Write from the source to the destination.
                        bulkCopy.WriteToServer(reader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        WriteLog("Log_10_11_18.txt", String.Format("Exception = {0}", ex.Message));
                        return false;
                    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-11 21:11:45

这对我有用..。

代码语言:javascript
运行
复制
    static void Main(string[] args) {

        //
        // Table definition:
        //
        // CREATE TABLE dbo.Test(Id INT IDENTITY(1, 1) NOT NULL, Content VARCHAR(MAX) NULL);
        //

        // Create some dummy data.
        var table = new DataTable();
        table.Columns.Add(new DataColumn("Id", typeof(System.Int32)));
        table.Columns.Add(new DataColumn("Content", typeof(System.String)));
        var row = table.NewRow();
        row["Id"] = 12345;
        row["Content"] = "Testing";
        table.Rows.Add(row);

        // Bulk copy it in.
        using (var connection = new SqlConnection(@"Data Source=(localdb)\ProjectsV13;Initial Catalog=Sandbox;Integrated Security=SSPI"))
        using (var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity, null)) {
            connection.Open();
            bulkCopy.DestinationTableName = "dbo.Test";
            bulkCopy.WriteToServer(table);
        };

        //
        // To check results:
        //
        // SELECT * FROM dbo.Test;
        //

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52767857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档