2011-02-01 82 views
0

我們可以稱之爲iC_ProductImageAssociation表添加更多的列「ProductFeatureApplicabilityId」Sybase批量複製

此列將引用iC_ProductFeatureApplicability。因此,當產品假設產品顏色爲'RED'的ABC被插入到iC_ProductFeatureApplicability中時,我們可以使用此ProductFeatureApplicabilityId並將其存儲在iC_ProductImageAssociation表中。

so now圖像可以應用於產品或產品特徵或兩者。另外我計劃生成一個備用ProductFeature數據模型。我們可以創建一個產品功能(iC_ProductFeatureMasters)的主表,它可以將產品特性(iC_ProductFeatureMasters)作爲一個功能存儲在其中(而不是像iC_ProductFeature表中那樣存儲顏色,尺寸,品牌等等)將所有這些列存儲爲行和在運行時administor可以定義更多的功能

所以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  

回答

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對象的構造函數。

+0

Sql Server批量複製在Sybase上不起作用。但是在Sybase的Sybase ASE驅動程序中有批量複製方法。 – 2011-02-01 15:34:57

0

很可能,每行插入需要執行的觸發器和其他邏輯是讓事情緩慢的原因,而不是插入方法。如果需要執行觸發器,則即使批量複製也不會很快。

我建議重構在所有行插入後重新運行的邏輯,而不是一次一個。通常情況下,您需要爲新數據創建登臺表格,在這些表格中,將在處理之前以及與常規數據表格合併之前進行存儲。