Sybase批量复制

时间:2011-02-01 14:29:53

标签: c# ado.net copy bulk

我们可以在iC_ProductImageAssociation表中添加一个名为'ProductFeatureApplicabilityId'的列

本专栏将参考iC_ProductFeatureApplicability。因此,当产品假设将具有Color'RED'RED'的ABC插入iC_ProductFeatureApplicability时,我们可以将此ProductFeatureApplicabilityId存储在iC_ProductImageAssociation表中。

所以现在Image可以应用于产品或ProductFeature或两者。此外,我计划生产另一种ProductFeature数据模型。

其中,而不是将各列作为特征存储(如目前在iC_ProductFeature表中,我们将颜色,大小,品牌等存储为单独的列),我们可以创建产品功能(iC_ProductFeatureMasters)的主表,将所有这些列存储为行,在运行时管理器可以定义更多功能

所以iC_ProductFeatureMasters会将数据存储为

ProductFeatureMasterId                        FeatureName 

 1                                            Color

 2                                            Size

 3                                            Brand 

 4                                            Dimensions

和iC_ProductFeature表将存储ProductFeatureMasterId及其值。

所以现在iC_ProductFeature将如下所示

ProductFeatureId               ProductFeatureMasterId     Description         UOM ID  

 1                                    1                       RED
 2                                    4                       10                     1    

2 个答案:

答案 0 :(得分:0)

以下是我的代码中的示例:

var table = new DataTable();
var sqlCopy = new SqlBulkCopy(dataBaseConnection, SqlBulkCopyOptions.Default, sqlTransaction) { DestinationTableName = destinationTableName};
sqlCopy.WriteToServer(table);

您可以通过以下链接找到更多信息:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

http://www.sqlteam.com/article/use-sqlbulkcopy-to-quickly-load-data-from-your-client-to-sql-server

您无法为多个表执行BulkCopy,因此您需要为每个表执行BulkCopy。 对于事务行为,您应该创建Transaction对象并传入BulkCopy对象的构造函数。

答案 1 :(得分:0)

有可能,每个行插入需要执行的触发器和其他逻辑是保持缓慢的事情,而不是插入方法。如果需要执行触发器,即使批量复制也不会很快。

我建议重构逻辑,使其在插入后的所有行上运行,而不是一次一行。通常,您将为新数据创建临时表,在处理时以及在与常规数据表合并之前存储它们。