字段更改时,哈希字符串不会更改

时间:2018-04-04 13:50:22

标签: c# .net visual-studio hash ssis

我有一个ssis脚本在visual studio中运行来计算列的哈希值,但只有在这个特定情况下,当其中一个列发生更改时,哈希不会改变。我不知道为什么。我指的是HashString计算。

它正在处理其余的表,我们有15个其他表,我们运行类似的代码。

代码:

private int seq = 1;

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    string Separator = ";";
    string RowData = "";
    string LoadSourceString = "DBNAME";
    string HashOne;
    string HashTwo;
    string HashThree;
    string HashFour;
    string HashFive;
    string HashSix;
    string HashSeven;
    string HashEight;
    string HashDiff;
    string HashString;
    string HashNoSpace;

    HashString = (
                 //(Row.CUSTOMERID_IsNull ? "" : Row.CUSTOMERID.ToString()).Trim() + Separator +
                 (Row.CUSTOMERPOREF_IsNull ? "" : Row.CUSTOMERPOREF.ToString()).Trim() + Separator +
                 (Row.CONTACTFIRSTNAME_IsNull ? "" : Row.CONTACTFIRSTNAME.ToString()).Trim() + Separator +
                 (Row.CONTACTLASTNAME_IsNull ? "" : Row.CONTACTLASTNAME.ToString()).Trim() + Separator +
                 (Row.CONTACTPOSITION_IsNull ? "" : Row.CONTACTPOSITION.ToString()).Trim() + Separator +
                 (Row.CONTACTHONORIFIC_IsNull ? "" : Row.CONTACTHONORIFIC.ToString()).Trim() + Separator +
                 (Row.CONTACTSALUTATION_IsNull ? "" : Row.CONTACTSALUTATION.ToString()).Trim() + Separator +
                 (Row.CONTACTPHONE_IsNull ? "" : Row.CONTACTPHONE.ToString()).Trim() + Separator +
                 (Row.CONTACTFAX_IsNull ? "" : Row.CONTACTFAX.ToString()).Trim() + Separator +
                 (Row.SHIPTOADDRNO_IsNull ? "" : Row.SHIPTOADDRNO.ToString()).Trim() + Separator +
                 (Row.FREEONBOARD_IsNull ? "" : Row.FREEONBOARD.ToString()).Trim() + Separator +
                 (Row.SHIPVIA_IsNull ? "" : Row.SHIPVIA.ToString()).Trim() + Separator +
                 (Row.TERRITORY_IsNull ? "" : Row.TERRITORY.ToString()).Trim() + Separator +
                 //(Row.SALESTAXGROUPID_IsNull ? "" : Row.SALESTAXGROUPID.ToString()).Trim() + Separator +
                 //(Row.SALESREPID_IsNull ? "" : Row.SALESREPID.ToString()).Trim() + Separator +
                 //(Row.SITEID_IsNull ? "" : Row.SITEID.ToString()).Trim() + Separator +
                 (Row.TERMSNETTYPE_IsNull ? "" : Row.TERMSNETTYPE.ToString()).Trim() + Separator +
                 (Row.TERMSNETDAYS_IsNull ? "" : Row.TERMSNETDAYS.ToString()).Trim() + Separator +
                 (Row.TERMSNETDATE_IsNull ? "" : Row.TERMSNETDATE.ToString()).Trim() + Separator +
                 (Row.TERMSDISCTYPE_IsNull ? "" : Row.TERMSDISCTYPE.ToString()).Trim() + Separator +
                 (Row.TERMSDISCDAYS_IsNull ? "" : Row.TERMSDISCDAYS.ToString()).Trim() + Separator +
                 (Row.TERMSDISCDATE_IsNull ? "" : Row.TERMSDISCDATE.ToString()).Trim() + Separator +
                 (Row.TERMSDISCPERCENT_IsNull ? "" : Row.TERMSDISCPERCENT.ToString()).Trim() + Separator +
                 (Row.TERMSDESCRIPTION_IsNull ? "" : Row.TERMSDESCRIPTION.ToString()).Trim() + Separator +
                 (Row.FREIGHTTERMS_IsNull ? "" : Row.FREIGHTTERMS.ToString()).Trim() + Separator +
                 (Row.ORDERDATE_IsNull ? "" : Row.ORDERDATE.ToString()).Trim() + Separator +
                 (Row.DESIREDSHIPDATE_IsNull ? "" : Row.DESIREDSHIPDATE.ToString()).Trim() + Separator +
                 (Row.BACKORDER_IsNull ? "" : Row.BACKORDER.ToString()).Trim() + Separator +
                 (Row.STATUS_IsNull ? "" : Row.STATUS.ToString()).Trim() + Separator +
                 (Row.SELLRATE_IsNull ? "" : Row.SELLRATE.ToString()).Trim() + Separator +
                 (Row.BUYRATE_IsNull ? "" : Row.BUYRATE.ToString()).Trim() + Separator +
                 (Row.LASTSHIPPEDDATE_IsNull ? "" : Row.LASTSHIPPEDDATE.ToString()).Trim() + Separator +
                 (Row.POSTINGCANDIDATE_IsNull ? "" : Row.POSTINGCANDIDATE.ToString()).Trim() + Separator +
                 (Row.TOTALAMTORDERED_IsNull ? "" : Row.TOTALAMTORDERED.ToString()).Trim() + Separator +
                 (Row.TOTALAMTSHIPPED_IsNull ? "" : Row.TOTALAMTSHIPPED.ToString()).Trim() + Separator +
                 (Row.MARKEDFORPURGE_IsNull ? "" : Row.MARKEDFORPURGE.ToString()).Trim() + Separator +
                 (Row.EDIFLAG_IsNull ? "" : Row.EDIFLAG.ToString()).Trim() + Separator +
                 (Row.EXCHRATEFIXED_IsNull ? "" : Row.EXCHRATEFIXED.ToString()).Trim() + Separator +
                 (Row.PROMISEDATE_IsNull ? "" : Row.PROMISEDATE.ToString()).Trim() + Separator +
                 (Row.PRINTEDDATE_IsNull ? "" : Row.PRINTEDDATE.ToString()).Trim() + Separator +
                 (Row.EDIBLANKETFLAG_IsNull ? "" : Row.EDIBLANKETFLAG.ToString()).Trim() + Separator +
                 //(Row.CURRENCYID_IsNull ? "" : Row.CURRENCYID.ToString()).Trim() + Separator +
                 //(Row.WAREHOUSEID_IsNull ? "" : Row.WAREHOUSEID.ToString()).Trim() + Separator +
                 (Row.ACCEPTEARLY_IsNull ? "" : Row.ACCEPTEARLY.ToString()).Trim() + Separator +
                 (Row.CREATEDATE_IsNull ? "" : Row.CREATEDATE.ToString()).Trim() + Separator +
                 (Row.CONTACTMOBILE_IsNull ? "" : Row.CONTACTMOBILE.ToString()).Trim() + Separator +
                 (Row.CONTACTEMAIL_IsNull ? "" : Row.CONTACTEMAIL.ToString()).Trim() + Separator +
                 (Row.USER3_IsNull ? "" : Row.USER3.ToString()).Trim() + Separator +
                 (Row.USER6_IsNull ? "" : Row.USER6.ToString()).Trim() + Separator +
                 (Row.CONSIGNMENT_IsNull ? "" : Row.CONSIGNMENT.ToString()).Trim() + Separator +
                 (Row.STATUSEFFDATE_IsNull ? "" : Row.STATUSEFFDATE.ToString()).Trim() + Separator +
                 (Row.PROMISEDELDATE_IsNull ? "" : Row.PROMISEDELDATE.ToString()).Trim() + Separator +
                 //(Row.TERMSID_IsNull ? "" : Row.TERMSID.ToString()).Trim() + Separator +
                 (Row.INTERNALORDER_IsNull ? "" : Row.INTERNALORDER.ToString()).Trim()              
                 //(Row.CONTACTID_IsNull ? "" : Row.CONTACTID.ToString()).Trim()
                 );
    HashNoSpace = HashString.Trim();

    using (SHA1 shaHash = new SHA1Managed())
    {
        HashOne = GetShaHash(shaHash, RowData = (Row.ID_IsNull ? "" : Row.ID.ToString()).Trim());
        HashTwo = GetShaHash(shaHash, RowData = (Row.CUSTOMERID_IsNull ? "" : Row.CUSTOMERID.ToString()).Trim());
        HashThree = GetShaHash(shaHash, RowData = (Row.SALESTAXGROUPID_IsNull ? "" : Row.SALESTAXGROUPID.ToString()).Trim());
        HashFour = GetShaHash(shaHash, RowData = (Row.SITEID_IsNull ? "" : Row.SITEID.ToString()).Trim());
        HashFive = GetShaHash(shaHash, RowData = (Row.CURRENCYID_IsNull ? "" : Row.CURRENCYID.ToString()).Trim());
        HashSix = GetShaHash(shaHash, RowData = (Row.TERMSID_IsNull ? "" : Row.TERMSID.ToString()).Trim());
        HashSeven = GetShaHash(shaHash, RowData = (Row.CONTACTID_IsNull ? "" : Row.CONTACTID.ToString()).Trim());

        //Row.HashDiffKey = GetShaHash(shaHash, RowData = (Row.CODE_IsNull ? "" : Row.CODE.ToString()) + Separator + (Row.DESCRIPTION_IsNull ? "" : Row.DESCRIPTION.ToString()));
        HashDiff = GetShaHash(shaHash, RowData = HashNoSpace.ToUpper());

        HashEight = GetShaHash(shaHash, RowData = (Row.ID_IsNull ? "" : Row.ID.ToString()).Trim() + Separator + 
                                                  (Row.CUSTOMERID_IsNull ? "" : Row.CUSTOMERID.ToString()).Trim()
                                                  );
    }

    Row.CustomerOrderHashKey = HashOne.ToUpper();
    Row.CustomerHashKey = HashTwo.ToUpper();
    Row.SalesTaxGroupHashKey = HashThree.ToUpper();
    Row.SiteHashKey = HashFour.ToUpper();
    Row.CurrencyHashKey = HashFive.ToUpper();
    Row.TermsHashKey = HashSix.ToUpper();
    Row.ContactHashKey = HashDiff.ToUpper();
    Row.HashDiff = HashSeven.ToUpper();
    Row.CustomerOrderToCustomerHashKey = HashEight.ToUpper();
    Row.SEQUENCE = this.seq++;

    Row.LOADSOURCE = LoadSourceString.ToString();



}


static string GetShaHash(SHA1 shaHash, string input)
{
    // Convert the input string to a byte array and compute the hash.
    byte[] data = shaHash.ComputeHash(Encoding.Unicode.GetBytes(input));

    // Create a new Stringbuilder to collect the bytes
    // and create a string.
    StringBuilder sBuilder = new StringBuilder();

    // Loop through each byte of the hashed data
    // and format each one as a hexadecimal string.
    for (int i = 0; i < data.Length; i++)
    {
        sBuilder.Append(data[i].ToString("x2"));
    }

    // Return the hexadecimal string.
    return sBuilder.ToString();
}

0 个答案:

没有答案