Forum » Programiranje » C# - xml import v bazo
C# - xml import v bazo
nuclear ::
Pozdrav. Imam xml dokument katerega uporabljam za backupe.
Z datotekami manjšimi od 50MB nisem imel problema importa v bazo. Uporabljam to kodo:
Problem pa nastane če so fajli XML večji od 50, ker traja celo večnost.. Morda pozna kdo kakšen primer, ker na internetu povsod berem, kako je dataset najslabše kar lahko narediš z XML(traja predolgo), ne morem pa najti nobenega enostanvega primera, z drugo metodo.
Je kdo delal podobno? Kakšen primer?
Z datotekami manjšimi od 50MB nisem imel problema importa v bazo. Uporabljam to kodo:
protected void uvoziPodatkeXML(string backup, int tabela, string destinacijaTabela) { DataSet reportData = new DataSet(); FileStream filestream = File.OpenRead(lblPotIzvozi.Text + txtIme.Text + backup); BufferedStream buffered = new BufferedStream(filestream); reportData.ReadXml(buffered); //reportData.ReadXml(lblPotIzvozi.Text + txtIme.Text + backup); SqlConnection povezava = new SqlConnection(Convert.ToString(Session["cs"])); SqlBulkCopy sbc = new SqlBulkCopy(Convert.ToString(Session["cs"]), SqlBulkCopyOptions.KeepIdentity); povezava.Open(); sbc.DestinationTableName = destinacijaTabela; sbc.WriteToServer(reportData.Tables[tabela]); sbc.Close(); povezava.Close(); }
Problem pa nastane če so fajli XML večji od 50, ker traja celo večnost.. Morda pozna kdo kakšen primer, ker na internetu povsod berem, kako je dataset najslabše kar lahko narediš z XML(traja predolgo), ne morem pa najti nobenega enostanvega primera, z drugo metodo.
Je kdo delal podobno? Kakšen primer?
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB
japol ::
K ti zamrzne pri odpiranju? Kolk velik xml si lahk odpru, pa da je še delalo in kolk časa ga je odpiralo.
primer:
Ka pa na podobno kot za access ali sql? Preko oledb? glej primer:
sam še zmeri je prek dataset, jst nimam s tem problemou, je pa res da še nisem meu nobenga fajla tolk velicga.
Lahk prpopaš del xmlja k se ponavlja? Pa da pol mogoče več povem. Magari pošl na zs.
Mam še primerov, morm mal pobrskat.
primer:
private void button10_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "D:\\"; openFileDialog1.Filter = "xml files (*.xml)|*.xml|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 2; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { XmlTextReader reader = new XmlTextReader(openFileDialog1.FileName); System.Xml.XmlDocument datoteka = new System.Xml.XmlDocument(); System.Xml.XmlDocument CompSpecs = new System.Xml.XmlDocument();// Set up the XmlDocument (CompSpecs) // CompSpecs.Load(reader); //Load the data from the file into the XmlDocument (CompSpecs) // dataGridView1.Rows.Add(); System.Xml.XmlNodeList NodeList = CompSpecs.GetElementsByTagName("book"); dataGridView1.Rows.Add(NodeList.Count - 1); for (int i = 1; i <= NodeList.Count; i++) { //preberi kar pripada nodu (title) System.Xml.XmlNodeList NodeList0 = CompSpecs.GetElementsByTagName("title"); dataGridView1.Rows[i - 1].Cells[0].Value = NodeList0[i - 1].ChildNodes[0].InnerText; } } }
Ka pa na podobno kot za access ali sql? Preko oledb? glej primer:
string cnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + path + "';"; string dbCommand = "SELECT Column1, Column2, Column3 FROM Table1;"; OleDbDataAdapter adapter = new OleDbDataAdapter(dbCommand, cnString); DataSet ds = new DataSet(); adapter.Fill(ds); DataTable dt = ds.Tables[0];
sam še zmeri je prek dataset, jst nimam s tem problemou, je pa res da še nisem meu nobenga fajla tolk velicga.
Lahk prpopaš del xmlja k se ponavlja? Pa da pol mogoče več povem. Magari pošl na zs.
Mam še primerov, morm mal pobrskat.
nuclear ::
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB
nuclear ::
sem naredil sheme, vendar imam en problem.. recimo imam 19 tabel. v aplikaciji uporabim nekaj zadev, tako se zapolne par 6 tabel, in exporta v xml, kjer se mi zapiše struktura za teh 6 tabel recimo..
ko hočem z bulk load improtat nazaj v bazo, pa mi javi sledečo napako(debugger):
torej predvidevam, ker za preostale tabele v shemi ni dobil podatkov ali kaj?
probal sem s shemo za eno tabelo, in xml podatke za eno tabelo in dela(tisti standardni primer)..
je mogoče kaj potrebno nastaviti ko več tabel kot pa eno importaš?
ko hočem z bulk load improtat nazaj v bazo, pa mi javi sledečo napako(debugger):
Invalid character value for cast specification.
torej predvidevam, ker za preostale tabele v shemi ni dobil podatkov ali kaj?
probal sem s shemo za eno tabelo, in xml podatke za eno tabelo in dela(tisti standardni primer)..
je mogoče kaj potrebno nastaviti ko več tabel kot pa eno importaš?
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB
Zgodovina sprememb…
- spremenil: nuclear ()
keworkian ::
Ta character value je verjetno narobe iz tabele prebral, tam kjer imas dt:type. On bi rad castal v drug tip ampak ne more.
Obscenities in B-Flat
nuclear ::
Aha ok, se pravi ne rabiš nič dodatnega za več tabel povezanih, kot pa primer za eno?
? Ker sem bral na gogolu, da so problemi z več tabelami? Tiste tipe mam pa vse iste, damn,.
bump
SQLXMLBulkLoad3Class objBL = new SQLXMLBulkLoad3Class(); objBL.ConnectionString = "provider=sqloledb;" + Convert.ToString(Session["cs"]); //cstring objBL.ErrorLogFile = "error.xml"; objBL.KeepIdentity = false; objBL.XMLFragment = true; objBL.SchemaGen = true; objBL.BulkLoad = true; objBL.Execute(lblPotIzvozi.Text + txtIme.Text + "xmlShema.xml", lblPotIzvozi.Text + txtIme.Text + backup); //shema, xml
? Ker sem bral na gogolu, da so problemi z več tabelami? Tiste tipe mam pa vse iste, damn,.
bump
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB
Zgodovina sprememb…
- spremenil: nuclear ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c#] shrani text, tabele, slikeOddelek: Programiranje | 1506 (1112) | klemen93 |
» | c# tiho tiskanje slik.Oddelek: Programiranje | 1936 (1607) | OmegaM |
» | SilverlightOddelek: Programiranje | 1732 (1389) | hodor |
» | C# ProblemOddelek: Programiranje | 1249 (1045) | joze67 |
» | [VB] OpenOddelek: Programiranje | 1526 (1365) | Monster |