插入单个记录和临时批量副本的有效方法

时间:2018-03-20 14:31:01

标签: c# sql-server

您好我使用参数化查询将单行插入表格。

    string commandText = @"INSERT INTO [DATA].[Jack].[Built] VALUES(
                                        @utcDT,
                                        @Symbol,
                                        @Type,
                                        @Value,
                                        @Size,
                                        @Mid,
                                        @Spread,
                                        @Date,
                                        @SeqNumber)";

    var insertCommand = new SqlCommand(commandText);
    insertCommand.Parameters.Add("@utcDT", SqlDbType.DateTime2);
    insertCommand.Parameters.Add("@Symbol", SqlDbType.NVarChar);
    insertCommand.Parameters.Add("@Type", SqlDbType.NVarChar);
    insertCommand.Parameters.Add("@Value", SqlDbType.Float);
    insertCommand.Parameters.Add("@Size", SqlDbType.Int);
    insertCommand.Parameters.Add("@Mid", SqlDbType.Float);
    insertCommand.Parameters.Add("@Spread", SqlDbType.Float);
    insertCommand.Parameters.Add("@Date", SqlDbType.Date);
    insertCommand.Parameters.Add("@SeqNumber", SqlDbType.BigInt);

然后调用insert:

                            insertCommand.Parameters["@utcDT"].Value = utcDT;
                            insertCommand.Parameters["@Symbol"].Value = symbol;
                            insertCommand.Parameters["@Type"].Value = type;
                            insertCommand.Parameters["@Value"].Value = value;
                            insertCommand.Parameters["@Size"].Value = size;

                            insertCommand.Parameters["@Mid"].Value = current.Mid();
                            insertCommand.Parameters["@Spread"].Value = current.Spread();
                            insertCommand.Parameters["@Date"].Value = utcDT.Date;
                            insertCommand.Parameters["@SeqNumber"].Value = fullSeqNumber;

                            insertCommand.ExecuteNonQuery();

但是,有时我想一次插入数百万行,这是我从表中使用SqlBulkCopy。这很简洁。

但我需要先创建一个表,再次指定所有列和类型。

必须同时指定这些东西可能容易出错。有没有办法使用数据表WITHOUT SqlBulkCopy有效地插入单行?

0 个答案:

没有答案