0

行ごとに動作し、データベースに挿入するフラットファイルを解析していますが、追加のステップ、実際には2つのステップを追加したいと考えています。

最初に、特定の自動車メーカーのリコールのレコードのみが必要です。これには、含めたいすべてのメーカーのリストを含む AutoMake というデータベース テーブルがあります。レコードをそのテーブルと比較して、含めたいメーカーのレコードであることを確認する必要があります。

次に、レコードがまだデータベースにないことを確認するために、2 回目のチェックを行う必要があります。これはコンソール アプリであり、これにはエンティティを使用しています。これが私のコードです。チェックを含めるためにこれを書き直し、書き直そうとしていますが、それを取得していません。

ああ、それは本当に重要ではありません。誰かが私を正しい方向に導くことができれば、そこから移動できますtokens[2]が、一意の値MAKETXTRCL_CMPT_IDあるため、レコードがデータベースに既に存在するかどうかを確認するために使用できtokens[23]ますRCL_CMPT_ID

    public static void ParseTSV(string location)
    {
        Console.WriteLine("Parsing.....");

        using (var reader = new StreamReader(location))
        {
            var lines = reader.ReadToEnd().Split(new char[] { '\n' });

            if (lines.Length > 0)
            {
               foreach (string line in lines)
               {
                  if (string.IsNullOrWhiteSpace(line))
                  {
                    continue;
                  }
                  var tokens = line.Trim().Split(new char[] { '\t' });

                  var recalls = new Recalls();

                  recalls.RECORD_ID = tokens[0];
                  recalls.CAMPNO = tokens[1];
                  recalls.MAKETXT = tokens[2];
                  recalls.MODELTXT = tokens[3];
                  recalls.YEARTXT = tokens[4];
                  recalls.MFGCAMPNO = tokens[5];
                  recalls.COMPNAME = tokens[6];
                  recalls.MFGNAME = tokens[7];
                  recalls.BGMAN = tokens[8];
                  recalls.ENDMAN = tokens[9];
                  recalls.RCLTYPECD = tokens[10];
                  recalls.POTAFF = tokens[11];
                  recalls.ODATE = tokens[12];
                  recalls.INFLUENCED_BY = tokens[13];
                  recalls.MFGTXT = tokens[14];
                  recalls.RCDATE = tokens[15];
                  recalls.DATEA = tokens[16];
                  recalls.RPNO = tokens[17];
                  recalls.FMVSS = tokens[18];
                  recalls.DESC_DEFECT = tokens[19];
                  recalls.CONEQUENCE_DEFECT = tokens[20];
                  recalls.CORRECTIVE_ACTION = tokens[21];
                  recalls.NOTES = tokens[22];
                  recalls.RCL_CMPT_ID = tokens[23];


                  string connectionString = GetConnectionString();
                  using (SqlConnection connection = new SqlConnection(connectionString))
                  {
                      SqlCommand cmdIns = new SqlCommand(GetInsertSqlCust(recalls), connection);
                      connection.Open();
                      cmdIns.ExecuteNonQuery();
                      connection.Close();
                      cmdIns.Dispose();
                      cmdIns = null;
                  }
              }
          }
      }
  }
4

2 に答える 2

1

1: ID を取得して照合します 2: 検索を実行する必要があるテーブルを次のように取得します

 string strExpression="";
    (Datatable tdGeneric = dal.getsometable())

3: auto make が存在するかどうかを確認するには:

if ( tdGeneric != null && tdGeneric.Rows.Count > 0)
  {
   strExpression = "tablecolumnsname = '" + recalls.MAKETXT + "' ";
   tdGeneric.DefaultView.RowFilter = strExpression;
   tdGeneric = tdGeneric.DefaultView.ToTable();
    if (tdGeneric.Rows.Count > 0)
    {
          //make exist
    }
    else
     make don't exists

  }
  else
 {
   make don't exist skip that text file's record
 }

4: 存在する場合は、レコードがテーブルに存在するかどうかを確認します。

元のテーブルを取得し、そのテーブルで特定の ID を検索します。

 (Datatable tdGeneric2 = dal.getsometable())
 if ( tdGeneric2 != null && tdGeneric.Rows.Count > 0)
      {
       strExpression = "tablecolumnsname = '" + recalls.RCL_CMPT_ID + "' ";
       tdGeneric2.DefaultView.RowFilter = strExpression;
       tdGeneric2 = tdGeneric2.DefaultView.ToTable();
          if (tdGeneric2.Rows.Count > 0)
        {
              //record exist
        }
        else
         record don't exists
      }
      else
     {
       record don't exist insert the record, or some flag to insert a record
     }
于 2012-10-14T20:15:14.313 に答える
0

キャッシュを利用できます。ファイルを読み取る前にすべてのMakeをフェッチし、既存のAutoMakeのリストまたはディクショナリを検索して、AutoMakeがデータベースにすでに存在するか、新しいものであるかを確認します。AutoMakeが新しい場合は、データベースにレコードを挿入し、List\Dictionaryにもmakeを追加します。AutoMakeがすでに存在する場合は、その行をスキップして次の行に移動します。

于 2012-10-13T17:10:37.890 に答える