OKATO рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░ рдбреЗрдЯрд╛ рдХреЛ MySql рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛

рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд░реВрд╕реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╢рд╣рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ред рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдореБрдЭреЗ рдЖрдпрд╛ рдерд╛, рд╡рд╣ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╢рд╣рд░реЛрдВ рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ XML рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рдФрд░ рдпрджрд┐ рд╕рдлрд▓ рд╣реЛ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ рдореЗрд░реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВред рдЬрдм рдореИрдВрдиреЗ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ рдЖрд╢рд╛рд╡рд╛рдж рдХрдо рд╣реЛ рдЧрдпрд╛ред рдмреЗрд╢рдХ, рдХрд┐рд╕реА рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдбреЗрдЯрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред KLADR рд╕реЗ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, KLADR рд╕реЗ SqlServer рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рдмрд╛рд░ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдХрд░рддрдм рджреЛрд╣рд░рд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ KLADR рд╕реЗ рдЖрдпрд╛рдд рдХреЛ рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдпрд╣ рддрдереНрдп рднреА рдпрд╛рдж рд╣реИ рдХрд┐ KLADR рдореЗрдВ рдбреЗрдЯрд╛ DBF рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ MySql рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рд╕рдВрд░рдЪрдирд╛ KLADR рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЧреБрдирд╛ рд╕рд░рд▓ рдереА, рдлрд┐рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдореБрдЭреЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ KLADR рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрднреА рднреА рд░реВрд╕ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕реАрдлрд╛рдпрд░ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, OKATOред рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд╕рднреА рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ Google рдореБрдЭреЗ рджреЗрдЧрд╛ред OKATO рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕ рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░ рдХреЛ рд╕рдореНрдорд┐рд▓рди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ( рдпрд╣рд╛рдВ OKATO рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ):

INSERT INTO `class_okato` (`id`, `name`, `code`, `control_number`, `parent_id`, `parent_code`, `node_count`, `additional_info`) VALUES(1, ' ', '01', 2, NULL, NULL, 3, ' '); INSERT INTO `class_okato` (`id`, `name`, `code`, `control_number`, `parent_id`, `parent_code`, `node_count`, `additional_info`) VALUES(2, '   /', '01200', 8, 1, '01', 60, NULL); INSERT INTO `class_okato` (`id`, `name`, `code`, `control_number`, `parent_id`, `parent_code`, `node_count`, `additional_info`) VALUES(3, '', '01201', 2, 2, '01200', 1, ' '); тАж 


рдпрд╣ рдЙрд╕ рд░реВрдк рдореЗрдВ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд░реВрд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╢рд╣рд░реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдХреЗрд╡рд▓ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░)ред рдЕрдм рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрд░реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрджрд▓ рдЧрдИ рд╣реИред рдореБрдЭреЗ dbf рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ sql рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рдХреНрд╡реЗрд░реА рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдФрд░ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╢рд╣рд░реЛрдВ рдФрд░ рдХрд╕реНрдмреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ, рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдЧрдгрд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдЪреБрдирдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрд┐рди рдЧрд╛рдВрд╡реЛрдВ рдХреА рдореБрдЭреЗ рдЬрд░реВрд░рдд рдирд╣реАрдВ рдереАред рдореБрдЭреЗ рдмрдбрд╝реЗ рд╢рд╣рд░реЛрдВ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдХреБрдЫ рднреА рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рд╣реБрдЖред рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реБрдП:

 select ok1.name as name_region, ok2.name as name_city from class_okato ok1 left join class_okato ok2 on ok1.code like (substring(ok2.code,1,2)) where ok1.parent_id is null and ok2.parent_id is not null and ((ok2.code like ('%4__') and ok2.code not like ('%400')) or (ok2.code like ('%5__') and ok2.code not like ('%500') and ok2.code not like ('%550'))) order by ok1.name,ok2.name 


рдХрдИ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдЬреЛ рдЖрдкрдХреЛ MySql рдпрд╛ MsSql рд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ XML рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗрддреЗ рд╣реИрдВред XML рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓реА:

 <?xml version="1.0"?> <SQL-query> <row> <name_region> </name_region> <name_city></name_city> </row> <row> <name_region> </name_region> <name_city></name_city> </row> <row> <name_region> </name_region> <name_city></name_city> </row> тАж 


рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ рдкрд╛рд░реНрд╕рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ XML рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред VisualStudio рдЦреЛрд▓рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЛ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдП, рдПрдХ рдореЗрдВ рдореБрдЭреЗ xml рджрд░реНрдЬ рдХрд░рдирд╛ рдерд╛, рджреВрд╕рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдереАред рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝рд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рднреА рдЬрд╛рджреВ рд╣реБрдЖ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ xml рдХреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ:

  private void btnXmlToSql_Click(object sender, EventArgs e) { const string elementRegion = "name_region"; const string elementCity = "name_city"; string sqlRegions = "INSERT INTO regions (id, name) VALUES ({0}, '{1}')"; string sqlCities = "INSERT INTO cities (id, name, region_id) VALUES ({0}, '{1}', {2})"; StringBuilder resultRegions = new StringBuilder(); StringBuilder resultCities = new StringBuilder(); XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlTextBox.Text); var rowCollection = doc.GetElementsByTagName("row"); string storeRegion = null; string valRegion = ""; int idRegion = 0; int idCity = 0; for (int i = 0; i < rowCollection.Count; i++) { foreach (XmlNode node in rowCollection[i].ChildNodes) { if (node.Name == elementRegion) { valRegion = node.InnerText; if (storeRegion != valRegion) { idRegion++; resultRegions.Append(string.Format(sqlRegions, idRegion, valRegion)+";\r\n"); storeRegion = valRegion; } } if(node.Name == elementCity) { idCity++; resultCities.Append(string.Format(sqlCities, idCity, node.InnerText, idRegion)+";\r\n"); } } } sqlTextBox.Text = resultRegions.ToString()+ resultCities.ToString(); } 


рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА, рдПрдХ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореБрдЭреЗ рдкреНрд░рд╛рдкреНрдд XML рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореБрдЭреЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

Source: https://habr.com/ru/post/In150349/


All Articles