簡體   English   中英

從數據庫中刪除不在平面文件中的記錄

[英]Remove records from Database that are not in a flat file

我正在將記錄從文本文件導入數據庫。 我設置了它來檢查記錄,以確保數據庫中沒有重復的記錄。 如果數據庫中已經有一個條目,它將跳過該記錄。 現在,我需要解決的問題是文本文件中沒有記錄,但是數據庫中有記錄。 我需要從數據庫中刪除與文件中的任何記錄都不匹配的記錄。

    public static void ParseComplaint(string location)
    {

        Console.WriteLine("Parsing.....");
        List<AutoMakeNoEntity> am = DBCacheHelper.GetAllMakes().ToList<AutoMakeNoEntity>();

        using (var reader = new StreamReader(location))
        {
            foreach (string line in File.ReadLines(location))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }
                var tokens = line.Trim().Split(new char[] { '\t' });

                if (am.Any(c => c.MakeName == tokens[3]))
                {
                    using (RecallsContext context = new RecallsContext())
                    {
                        string tmp = tokens[0];
                        if (!context.complaints.Any(c => c.CMPLID == tmp))
                        {

                            var recalls = new Complaints();

                            recalls.CMPLID = tokens[0];
                            recalls.ODINO = tokens[1];
                            recalls.MFR_NAME = tokens[2];
                            recalls.MAKETXT = tokens[3];
                            recalls.MODELTXT = tokens[4];
                            recalls.YEARTXT = tokens[5];
                            recalls.CRASH = tokens[6];
                            recalls.FAILDATE = tokens[7];
                            recalls.FIRE = tokens[8];
                            recalls.INJURED = tokens[9];
                            recalls.DEATHS = tokens[10];
                            recalls.COMPDESC = tokens[11];
                            recalls.CITY = tokens[12];
                            recalls.STATE = tokens[13];
                            recalls.VIN = tokens[14];
                            recalls.DATEA = tokens[15];
                            recalls.LDATE = tokens[16];
                            recalls.MILES = tokens[17];
                            recalls.OCCURENCES = tokens[18];
                            recalls.CDESCR = tokens[19];
                            recalls.CMPL_TYPE = tokens[20];
                            recalls.POLICE_RPT_YN = tokens[21];
                            recalls.PURCH_DT = tokens[22];
                            recalls.ORIG_OWNER_YN = tokens[23];
                            recalls.ANTI_BRAKES_YN = tokens[24];
                            recalls.CRUISE_CONT_YN = tokens[25];
                            recalls.NUM_CYLS = tokens[26];
                            recalls.DRIVE_TRAIN = tokens[27];
                            recalls.FUEL_SYS = tokens[28];
                            recalls.FUEL_TYPE = tokens[29];
                            recalls.TRANS_TYPE = tokens[30];
                            recalls.VEH_SPEED = tokens[31];
                            recalls.DOT = tokens[32];
                            recalls.TIRE_SIZE = tokens[33];
                            recalls.LOC_OF_TIRE = tokens[34];
                            recalls.TIRE_FAIL_TYPE = tokens[35];
                            recalls.ORIG_EQUIP_YN = tokens[36];
                            recalls.MANUF_DT = tokens[37];
                            recalls.SEAT_TYPE = tokens[38];
                            recalls.RESTRAINT_TYPE = tokens[39];
                            recalls.DEALER_NAME = tokens[40];
                            recalls.DEALER_TEL = tokens[41];
                            recalls.DEALER_CITY = tokens[42];
                            recalls.DEALER_STATE = tokens[43];
                            recalls.DEALER_ZIP = tokens[44];
                            recalls.PROD_TYPE = tokens[45];
                            if (tokens.Length == 47)
                            {
                                recalls.REPAIRED_YN = tokens[46];
                            }

                            context.complaints.Add(recalls);
                            context.SaveChanges();
                            recalls.Dispose();
                        }

                    }
                }
            }
        }
    }

我需要從數據庫中刪除與文件中的任何記錄都不匹配的記錄。

如果您希望數據庫與文本文件的內容匹配,為什么不先簡單地清空它呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM