Avatar billede grafikeren Nybegynder
11. juli 2004 - 11:07 Der er 73 kommentarer og
1 løsning

Script: Fra XML til mySQL

Hej

Kan nogen af Jer hjælpe mig i gang med et script til at trække min XML file's data over i en mySQL database. Jeg har tidligere haft én til at lave dette vha. access, men dette script skulle gerne selv kunne foretage det... Men denne overførsel skulle gerne foretages hver uge, og kun indskrive nye produkter til MySQL databasen.

Der er ca. 50000 poster i databasen. Kan det laves i ASP elle ASP.net. 100 point, da scriptet skal være rigtig godt og med mange forbehold, som jeg måske også skal ha' hjælp til. :-)

--------
Jeg kunne forestille mig en lykke, der ligner denne:

Hent en post ind fra XML
Ret evt. datoformat og lignende
Føj udvalgte oplysninger ind i mySQL databasen
Next
-------
Avatar billede snepnet Nybegynder
11. juli 2004 - 11:17 #1
Du kan lave et dataset udfra din xml-fil, og klaske den direkte ned i din MySql-database.
Jeg kan lave et lille simpelt eksempel til dig... Så kan du jo se om det er tilstrækkeligt.
Jeg poster det her lidt senere.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 11:27 #2
Fedt! Jeg er newbie i asp.net, men kender asp rimeligt. Det kan vel ikke laves i asp?

Glæder mig til at se dit eksempel.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 11:45 #3
Hej igen.

Sådan ser XML filens start ud:

"<?xml version="1.0" encoding="iso-8859-1" ?>
<products>
  <countries>
    <country iso="DK">
      <product type="music">
        <id>1</id>
        <ean>0077774806220</ean>
        <title>Magical Mystery Tour</title>
        <price currency="DKK">149.00</price>
        <delivery_time>3-5 arbejdsdage</delivery_time>
        <link>http://www.langadresse.dk/prod=2</link>
        <image>http://www.langadresse.dk/</image>
        <artist>Beatles</artist>
        <media>album</media>
        <release_date>19680411</release_date>
      </product>"

Følgende skal lagres i db:
- id
- title
- link
- image (HVIS DER ER ET! IKKE SIKKERT ALTID)
- artist
- media
- release_date (kun år, dvs. de første fire tal)
Avatar billede snepnet Nybegynder
11. juli 2004 - 11:55 #4
Hmm... Jeg er ikke den store ASP-helt, men jeg kan lige vise dig et meget simpelt .NET eksempel (C#), så kan du sige om du er frisk på at gå videre med det.
Hvad siger du til det ?
Avatar billede grafikeren Nybegynder
11. juli 2004 - 12:05 #5
Hvis bare du kan udskrive XML'en, så kan jeg vel formatere den i asp og gemme den.

Prøv :-)

Hvis du kan, så ville det være fint i .NET (VB). Det lugter jo lidt af asp.
Avatar billede snepnet Nybegynder
11. juli 2004 - 12:19 #6
Hehe... Nu kan du lige se her hvad der skal til for at hælde data fra en xml-fil og ned i en database. Jeg tror du vil synes at det ser tilstrækkelig enkelt ud til at du måske kunne være frisk.
Jeg har benyttet MySql client fra ByteFx.

private void btnLoadFromXML_Click(object sender, System.EventArgs e)
{
    // opret dataset
    DataSet ds = new DataSet();

    // indlæs data fra xml-fil
    ds.ReadXml(XML_FILE);

    // opret adapter
    MySqlDataAdapter adapter = CreateAdapter();           
                           
    // åben forbindelsen
    adapter.SelectCommand.Connection.Open();
   
    // smid sagerne i basen
    adapter.Update(ds);
   
    // luk forbindelsen
    adapter.SelectCommand.Connection.Close();
}

private MySqlDataAdapter CreateAdapter()
{
    // opret forbindelse
    MySqlConnection con = new MySqlConnection("Persist Security Info=False;database=grafikeren;server=server;user id=user;Password=password");
   
    // opret command - kommandobbyggeren kan lave resten udfra denne simple select
    MySqlCommand command = new MySqlCommand("select * from tbltarget", con);       
    // opret adapter
    MySqlDataAdapter adapter = new MySqlDataAdapter(command);
   
    // tilknyt commandbuilder - så sørger den for at generere insert og delete kommandoer
    MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(adapter);
   
    // retur med adapteren
    return adapter;
}

Bemærk at dette kun går godt fordi xml-en "passer" til tabellen.

Det er self. helt utilstrækkeligt, men jeg tænkte at det kunne give dig lidt .NET blod på tanden :o)

Jeg vil gerne gå videre med det således at det kan blive reelt brugbart for dig.

Spørg endelig hvis der er noget du er i tvivl om.

Mvh.
Avatar billede snepnet Nybegynder
11. juli 2004 - 13:20 #7
Hvis det er helt sort kan jeg godt flette et par af dine specifikke krav ind, så du kan se det i en lidt mere funktionel sammenhæng... Skal jeg gøre det ?
(har du mulighed for at lægge en fuld xml-fil online, så jeg kan hente den et eller andet sted ?)
Avatar billede grafikeren Nybegynder
11. juli 2004 - 13:20 #8
Det ser fint ud, men jeg kan intet C#, derfor kan jeg ikke gøre det færdigt... Desværre!

Hvis du kan gøre det mere brugbart, således at de forskellige felter i XML filen "omdirrigeres" til forskellige felter i mySQL'en. Kun nogle af dem skal gemmes. Image skal kun gemmes, hvis der står noget i XML filen.

Følgende felter skal overføres til mySQL, hvor felterne hedder det samme.

- id
- title
- link
- image (HVIS DER ER ET! IKKE SIKKERT ALTID) 
- artist
- media
- release_date (kun år, dvs. de første fire tal)

Hvis du kan få scriptet til at virke rigtig godt, så vil jeg gerne betale dig et lille beløb, hvis du er interesseret. Husk at XML filen er på 50 mb og oplysninger i mySQL databasen ikke skal overskrives. Der skal kun føjes til.

Er DU frisk? :-)
Avatar billede grafikeren Nybegynder
11. juli 2004 - 13:24 #9
Her er et lille uddrag af XML filen: http://www.cdguiden.dk/grafikeren/test.xml
Avatar billede snepnet Nybegynder
11. juli 2004 - 13:28 #10
Jeg laver et lille eksempel med mappings indtil videre :o)
Avatar billede grafikeren Nybegynder
11. juli 2004 - 13:29 #11
mappings?

Det lyder flot :)
Avatar billede snepnet Nybegynder
11. juli 2004 - 13:42 #12
Hehe.... Sæt ikke næsen op efter for meget - Det lyder nok finere end det er :o)
Jeg har hentet filen, og jeg kigger på det med det samme.
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:06 #13
Ok - Det virker her nu.
Du får koden her om lidt.
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:08 #14
har du visual studio .net installeret ?
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:20 #15
Skulle lige se om jeg kunne finde en converter der kunne transmogriffe C# kode til VB-kode. Du kan finde den her :
http://www.kamalpatel.net/ConvertCSharp2VB.aspx
(Der er også et link til en version der kører offline)
Avatar billede grafikeren Nybegynder
11. juli 2004 - 14:23 #16
Rigtig godt!

Kan du optimere koden til denne tabel:
CREATE TABLE `tblalbums` (
  `Id` int(11) NOT NULL auto_increment,
  `Kunstner` text NOT NULL,
  `Album` text NOT NULL,
  `Genre` text,
  `Overall` varchar(4) NOT NULL default '',
  `Image` text NOT NULL,
  `Link` text NOT NULL,
  `Media` text NOT NULL,
  `Release` year(4) NOT NULL default '0000',
  `oensket` char(1) default '0',
  PRIMARY KEY  (`Id`,`Id`),
  KEY `Kunstnere` (`Kunstner`(250),`Album`(100))
) TYPE=MyISAM AUTO_INCREMENT=11 ;

Du skal kun indsætte i id, kunstner, album, image, link, media, release.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 14:23 #17
Har ikke visual studio
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:25 #18
// Først aspx-filen

<%@ Page language="c#" Codebehind="Grafikeren.aspx.cs" AutoEventWireup="false" Inherits="Snips.Grafikeren" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>Grafikeren</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <P>
                <asp:Button id="btnLoadFromXML" runat="server" Text="Load from XML and dump to target"></asp:Button></P>
            <P>
                <asp:Button id="btnShowFromTargetTable" runat="server" Text="Show from TargetTable"></asp:Button></P>
        </form>
    </body>
</HTML>
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:26 #19
// Og så C# - koden :

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

using ByteFX.Data.MySqlClient;

namespace Snips
{
    public class Grafikeren : System.Web.UI.Page
    {
        // database connectionstring
        private const string CONNECTIONSTRING = "Persist Security Info=False;database=grafikeren;server=localhost;user id=user;Password=password";
       
        // filen der skal importeres fra
        private const string XMLFILE = @"C:\TEMP\grafikeren.xml";
       
        protected System.Web.UI.WebControls.Button btnShowFromTargetTable;
        protected System.Web.UI.WebControls.Button btnLoadFromXML;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.btnLoadFromXML.Click += new System.EventHandler(this.btnLoadFromXML_Click);
            this.btnShowFromTargetTable.Click += new System.EventHandler(this.btnShowFromTargetTable_Click);
            this.Load += new System.EventHandler(this.Page_Load);
        }

        private void btnLoadFromXML_Click(object sender, System.EventArgs e)
        {
            // opret dataset
            DataSet sourceDataSet = new DataSet();

            // indlæs data fra xml-fil
            sourceDataSet.ReadXml(XMLFILE);

            // opret targetdataset
            TargetDataSet targetDataSet = new TargetDataSet();
           
            // smid de ønskede værdier fra sourcedataset ind
            foreach(DataRow sourceDataRow in sourceDataSet.Tables["product"].Rows)
            {
                // opret et targetdatarow baseret på TargetTable
                DataRow targetDataRow = targetDataSet.Tables[TargetTable.TblTarget].NewRow();

                // map data fra source til target
                targetDataRow[TargetTable.title] = sourceDataRow["title"];
                targetDataRow[TargetTable.artist] = sourceDataRow["artist"];
                targetDataRow[TargetTable.link] = sourceDataRow["link"];               
                targetDataRow[TargetTable.media] = sourceDataRow["media"];
                targetDataRow[TargetTable.image] = sourceDataRow["image"];
                targetDataRow[TargetTable.release_date] = sourceDataRow["release_date"].ToString().Substring(0,4);

                // tilføj rækken til targetdataset
                targetDataSet.Tables[TargetTable.TblTarget].Rows.Add(targetDataRow);
            }
           
            // opret adapter
            MySqlDataAdapter adapter = CreateAdapter();           

            // tilføj tablemapping
            AddTableMappings(adapter);
                                   
            // åben forbindelsen
            adapter.SelectCommand.Connection.Open();
           
            // smid det opbyggede targetdataset i basen
            adapter.Update(targetDataSet);
           
            // luk forbindelsen
            adapter.SelectCommand.Connection.Close();

            // lidt oprydning
            sourceDataSet.Clear();
            sourceDataSet = null;
            targetDataSet.Clear();
            targetDataSet = null;
        }

        private MySqlDataAdapter CreateAdapter()
        {
            // opret forbindelse
            MySqlConnection con = new MySqlConnection(CONNECTIONSTRING);
           
            // opret command - kommandobbyggeren kan lave resten udfra denne simple select
            MySqlCommand command = new MySqlCommand("select * from tbltarget", con);   
           
            // opret adapter
            MySqlDataAdapter adapter = new MySqlDataAdapter(command);
           
            // tilknyt commandbuilder - så sørger den for at generere insert og delete kommandoer
            MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(adapter);
           
            // retur med adapteren
            return adapter;
        }

        private void btnShowFromTargetTable_Click(object sender, System.EventArgs e)
        {
            DataSet ds = new DataSet();           
            CreateAdapter().Fill(ds);
       
            // datagrid til præsentation
            DataGrid dg = new DataGrid();
            dg.DataSource = ds;
            dg.DataBind();
            this.Controls[1].Controls.Add(dg);
        }

        private void AddTableMappings(MySqlDataAdapter adapter)
        {
            DataTableMapping dataTableMapping = adapter.TableMappings.Add("Table", TargetTable.TblTarget);
            dataTableMapping.ColumnMappings.Add(TargetTable.ID, TargetTable.ID);
            dataTableMapping.ColumnMappings.Add(TargetTable.title, TargetTable.title);           
            dataTableMapping.ColumnMappings.Add(TargetTable.artist, TargetTable.artist);
            dataTableMapping.ColumnMappings.Add(TargetTable.media, TargetTable.media);
            dataTableMapping.ColumnMappings.Add(TargetTable.link, TargetTable.link);
            dataTableMapping.ColumnMappings.Add(TargetTable.image, TargetTable.image);
        }
    }

    public class TargetDataSet : DataSet
    {
        public TargetDataSet()
        {
            this.DataSetName = "TargetDataSet";
            this.Namespace = "grafikeren";
            this.Tables.Add(new TargetTable());
        }
    }
   
    public class TargetTable : DataTable
    {
        public static string TblTarget        = "tbltarget";
        public static string ID                = "ID";
        public static string title            = "title";
        public static string link            = "link";
        public static string image            = "image";
        public static string artist            = "artist";
        public static string media            = "media";
        public static string release_date    = "release_date";

        public TargetTable() : base(TblTarget)
        {
            DataColumn c = this.Columns.Add(ID, typeof(int));
            c.AllowDBNull = false;
            c.AutoIncrement = true;
            c.AutoIncrementSeed = 0;
            c.AutoIncrementStep = -1;
       
            DataColumn[] pKeys = {c};
            this.PrimaryKey = pKeys;

            c = this.Columns.Add(title, typeof(string));
            c.AllowDBNull = true;

            c = this.Columns.Add(link, typeof(string));
            c.AllowDBNull = true;           

            c = this.Columns.Add(image, typeof(string));
            c.AllowDBNull = true;           

            c = this.Columns.Add(artist, typeof(string));
            c.AllowDBNull = true;           

            c = this.Columns.Add(media, typeof(string));
            c.AllowDBNull = true;           

            c = this.Columns.Add(release_date, typeof(string));
            c.AllowDBNull = true;                       
        }
    }
}
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:30 #20
Hov for hulen.... Jeg så ikke du havde skrevet :o(
Avatar billede grafikeren Nybegynder
11. juli 2004 - 14:36 #21
Det er ok. Jeg prøver lige at rette... vender tilbage.
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:39 #22
De med optimering til din egen tabel... Det kan du bare gøre her :

public static string TblTarget        = "tbltarget";
public static string ID            = "ID";
public static string title        = "title";
public static string link        = "link";
public static string image        = "image";
public static string artist        = "kunstner";
public static string media        = "media";
public static string release_date    = "release_date";

Du retter f.eks. :
public static string artist        = "artist";
Til :
public static string artist        = "kunstner";
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:40 #23
Og hvis du vil tvinge det med NOT NULL igennem i koden også kan du rette her :

            DataColumn c = this.Columns.Add(ID, typeof(int));
            c.AllowDBNull = false;
            c.AutoIncrement = true;
            c.AutoIncrementSeed = 0;
            c.AutoIncrementStep = -1;
       
            DataColumn[] pKeys = {c};
            this.PrimaryKey = pKeys;

            c = this.Columns.Add(title, typeof(string));
            c.AllowDBNull = true;

            c = this.Columns.Add(link, typeof(string));
            c.AllowDBNull = true;           

            c = this.Columns.Add(image, typeof(string));
            c.AllowDBNull = true;           

            c = this.Columns.Add(artist, typeof(string));
            c.AllowDBNull = true;           

            c = this.Columns.Add(media, typeof(string));
            c.AllowDBNull = true;           

            c = this.Columns.Add(release_date, typeof(string));
            c.AllowDBNull = true;
Avatar billede grafikeren Nybegynder
11. juli 2004 - 14:43 #24
FEJL: Parser Error Message: Could not load type 'Snips.Grafikeren'.

?

Skal C# koden ikke gemmes i "Grafikeren.aspx.cs"
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:43 #25
Hvis du selv vil gå videre med det skal du sørge for at installere den her :
http://www.bytefx.com/Products.aspx
(den er gratis)

og CONNECTIONSTRING skal du sørge for at sætte til noget der passer.. Altså den her :

// database connectionstring
private const string CONNECTIONSTRING = "Persist Security Info=False;database=grafikeren;server=localhost;user id=user;Password=password";
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:45 #26
Jeps - der skal C# koden ligge, men mit projekt hedder Snips her, og det gør mit namespace så også.
Snips.Grafikeren skal du rette til <dit projektnavn>.Grafikeren
Avatar billede snepnet Nybegynder
11. juli 2004 - 14:51 #27
Jeg kan godt lave en lille installer til dig så du kan installere hele projektet fra nettet... Skal jeg gøre det ?
Avatar billede grafikeren Nybegynder
11. juli 2004 - 14:53 #28
Jeg er ikke med på hvad projektnavn er. Jeg har bare uploaded koden til min hjemmeside, hvor den skal køre. Jeg har fjernet koden Inherits (et eller andet).

Hvor skriver jeg tabellens navn ind? Jeg har ændret:
            MySqlCommand command = new MySqlCommand("select * from tblalbums", con);

Jeg har rettet alle synlige steder med connection og felternes navne. Den indsætter bare ikke noget.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 14:54 #29
Kan du forklare det der med at installere et projekt? Alt er uploaded til nettet, er det så nødvendigt?
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:01 #30
Ahh... det er ikke bare sådan at du ikke har visual studio .net... Du har slet ikke noget program til at bygge .net projekter i vel ?
Avatar billede grafikeren Nybegynder
11. juli 2004 - 15:02 #31
nope... Det lyder som om, jeg skal ha' det! :-)

Er visual studio gratis?

Kan du ikke bare sende dine filer, hvis man altså skal ha' flere filer???
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:04 #32
Det er ikke helt sådan det fungerer.
Hvis du skal lave rettelser i koden skal det kompileres efterfølgende, så vi bliver nødt til at gøre det på en anden måde.
2 min, så sender jeg lige et forslag.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 15:05 #33
Fedt, at du gider lave dette script til mig! Mange tak for det!!
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:09 #34
Ok - jeg laver lige en komplet side, hvor du også kan vælge den fil du vil uploade, og så sørger jeg for at du kan indskrive din egen connectionstring.
Men jeg bliver nødt til at sende dig et par dll-filer også. Ellers kan du ikke få det til at køre.
Kan jeg sende det til en emailadresse (og i givet fald hvilken) ?
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:12 #35
Det kommer lige til at tage lidt længere tid så... Giv mig lige et kvarter - så håber jeg at kunne have det klar.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 15:15 #36
kenneth@skovhus.de

Nu skal jeg lige prøve at forstå det... Man kan altså ikke rette i koden efter at det er blevet spyttet ud af dit program? Så skal vi måske lige overveje et par ting. XML filen er som sagt MEGA stor, og det vil derfor tage lang tid at køre ind. XML filen ligger på nettet, men kan selvfølgeligt hentes ned. Sciptet skal nok køre på nettet, da jeg har XP home. Skal man så vælge at downloade XML filen først til egen computer ELLER hente den fra dens placering ude på nettet ELLER uploade XML filen til samme server, som scriptet? Ligemeget hvad, så vil scriptet tage lidt tid at udføre. Kan du lave et lille response efter udførelsen. Det kunne være meget praktisk at få at vide, hvor mange poster der er blevet kørt ind i databasen.
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:15 #37
Æhh... inden jeg sørger for at du kan uploade filen kunne det være vi lige skulle have styr på om det egentlig er det du vil :o)

Ligger filen normalt et bestemt sted på serveren, eller er det en du ligger inde med lokalt som du så skal uploade ?
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:15 #38
Hov - der krydsede vi lige hinanden igen :o)
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:20 #39
Ok - du har så svaret. Filen ligger på nettet.
Har den altid det samme navn, eller er det noget der kan skifte fra gang til gang ?

Jeg kan godt lave det så du får en statusmelding ud til sidst.
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:27 #40
Hmm... lige en lille ting :
  `Image` text NOT NULL,
  `Link` text NOT NULL,
  `Media` text NOT NULL,
  `Release` year(4) NOT NULL default '0000',

Der står at Image ikke må være null og der er ikke nogen default, men du har også skrevet at det ikke er sikkert at der er et link til et billede.
Er det korrekt ? og hvad skal jeg i givet fald sørge for at indsætte hvis der ikke er nogen henvisning til et billede i xml-filen ?
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:29 #41
Men noget helt andet... Hvis det er sådan at du skal have noget der er færdigt, og at det skal fikses så det virker på dit eget web-hotel - uden at du skal pille ved koden - skal du nok oprette det som en opgave herude istedet.
Det er jo ikke rigtig noget spørgsmål så :o)
Avatar billede snepnet Nybegynder
11. juli 2004 - 15:36 #42
Er du for øvrigt sikker på at der kan køre .net applikationer på den server hvor du har dit webhotel sat op ?
Avatar billede grafikeren Nybegynder
11. juli 2004 - 15:38 #43
nej... vidste ikke det var så omfattende. Men vi 2 kan vel godt behandle det som en opgave. :-)

Ved intet image, skal den ikke skrive noget i databasen. Den skriver standart "". Det virker fint. Den må bare ikke være "null".

Filen ligger et bestemt sted ude på nettet. Jeg kan desværre ikke skrive stedet her. Men jeg kan vel skrive det ind i filen ligesom connection koden.

Denne rettelse kan vi ligeså godt tilføje med det samme:

    public class TargetTable : DataTable
    {
        public static string TblTarget        = "tbltarget";
        public static string ID                = "Id";
        public static string title            = "Album";
        public static string link            = "Link";
        public static string image            = "Image";
        public static string artist            = "Kunstner";
        public static string media            = "Media";
        public static string release_date    = "Release";

        public TargetTable() : base(TblTarget)


Desuden hedder selve tabellen "tblalbums".
Avatar billede grafikeren Nybegynder
11. juli 2004 - 15:39 #44
Jeg kan køre .net. Bruger Concor PRO.
Avatar billede snepnet Nybegynder
11. juli 2004 - 16:00 #45
Nu indsætter jeg som følger :

targetDataRow[TargetTable.Kunstner] = sourceDataRow["artist"];
targetDataRow[TargetTable.Album] = sourceDataRow["title"];
targetDataRow[TargetTable.Overall] = String.Empty;
targetDataRow[TargetTable.Image] = sourceDataRow["image"] != null ? sourceDataRow["image"] : String.Empty;
targetDataRow[TargetTable.Link] = sourceDataRow["link"] != null ? sourceDataRow["link"] : String.Empty;
targetDataRow[TargetTable.Media] = sourceDataRow["media"];
targetDataRow[TargetTable.Release] = sourceDataRow["release_date"].ToString().Substring(0,4);

Er det ok ?
Avatar billede grafikeren Nybegynder
11. juli 2004 - 16:07 #46
det ser fint ud. Du behøves nok ikke indsætte overall. Der er nogle tomme felter i db, som indsættes senere.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 16:10 #47
Du har sikkert husket det, men det er vigtigt at den kun indskriver i databasen, hvis der ikke eksisterer nogen post med det ID.
Avatar billede snepnet Nybegynder
11. juli 2004 - 16:21 #48
Nej det har jeg ikke husket, men det er nok mere fordi du skrev sådan her :

"Husk at XML filen er på 50 mb og oplysninger i mySQL databasen ikke skal overskrives. Der skal kun føjes til."

Jeg forstod det sådan at der ikke skulle pilles ved de oplysninger der stod i basen i forvejen, men kun tilføjes nye rækker, men den har jeg så misforstået.
Avatar billede snepnet Nybegynder
11. juli 2004 - 16:23 #49
Mener du at hvis der er ændrede oplysninger om et album... så skal de IKKE med eller hvordan skal jeg forstå den med at der ikke må overskrives ?
Avatar billede grafikeren Nybegynder
11. juli 2004 - 16:31 #50
Sorry. Skal prøve at udbyde.

Jeg ønsker at starte på en helt frisk database. Derfor skal alle cd'er køres ind på en gang. Derefter skal der køre en update en gang om ugen, som føjer nye cd'er til. Gamle cd'er ændre ikke data, derfor skal oplysninger ikke rettes. Det er dog muligt at der bliver tilføjet et billede, men det er vist for meget bøvl at den også skal tjekke for det. Hvis den bare kun kører nye ind.
Avatar billede snepnet Nybegynder
11. juli 2004 - 16:41 #51
Det er sådan set ikke noget problem (altså den med billedet), men det er et problem at du har auto-inkrementering på id-kolonnen, når du i virkeligheden ønsker at bevare de id's der kommer fra xml-filen. Det var også med til at narre mig :o)
Avatar billede grafikeren Nybegynder
11. juli 2004 - 16:43 #52
Det retter jeg bare. Det har ikke givet problemer før! :-)
Avatar billede snepnet Nybegynder
11. juli 2004 - 16:55 #53
Fint nok - det kører fint nok her lader det til.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 17:05 #54
Det lyder godt.
Avatar billede snepnet Nybegynder
11. juli 2004 - 17:09 #55
De der 50 MB... Hvor mange rækker bliver det til i basen ?
Avatar billede snepnet Nybegynder
11. juli 2004 - 17:09 #56
bare sådan et slag på tasken.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 17:12 #57
ca. 50.000-70.000... Tror jeg. :o)
Avatar billede grafikeren Nybegynder
11. juli 2004 - 17:19 #58
95.000 kan jeg se.
Avatar billede snepnet Nybegynder
11. juli 2004 - 17:25 #59
nå ikke andet... jeg har lige kørt 1.000.000 ind her :o)
Avatar billede snepnet Nybegynder
11. juli 2004 - 17:32 #60
Jeg har lige fået gæster... Jeg vender tilbage senere.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 17:37 #61
Mange tak for hjælpen indtil nu!
Avatar billede snepnet Nybegynder
11. juli 2004 - 19:14 #62
Er du der stadig ?
Avatar billede snepnet Nybegynder
11. juli 2004 - 19:29 #63
Nå... men gæsterne er væk, og du må lige sige til når du er klar til en test.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 20:48 #64
Jeg er klar kl 21:15.
Avatar billede grafikeren Nybegynder
11. juli 2004 - 21:18 #65
Du kan bare sende filer til kenneth@skovhus.de
Avatar billede snepnet Nybegynder
11. juli 2004 - 21:37 #66
Sorry... nu var jeg så lige væk :o)
Avatar billede grafikeren Nybegynder
11. juli 2004 - 21:37 #67
Hej!
Avatar billede snepnet Nybegynder
11. juli 2004 - 21:40 #68
Jeg har sendt det.
Avatar billede snepnet Nybegynder
11. juli 2004 - 22:00 #69
Nok bedst du starter med en lille diskret fil :o)
Avatar billede grafikeren Nybegynder
11. juli 2004 - 22:38 #70
you got mail.
Avatar billede grafikeren Nybegynder
14. juli 2004 - 00:50 #71
snepnet har lavet et fantastisk script til mig... Tusind tak! Læg et svar.
Avatar billede snepnet Nybegynder
14. juli 2004 - 00:52 #72
vær så artig :)
Avatar billede snepnet Nybegynder
14. juli 2004 - 00:54 #73
Det skal nok blive lagt herud... giv mig lige lidt tid
Avatar billede snepnet Nybegynder
14. juli 2004 - 01:52 #74
Nånej... jeg har jo allerede lagt det lidt højere oppe :o)

Der er dog lavet lidt ændringer til det, så det kører i en transaktion, og connectionstring, filnavn og mapning mellem xml-tabel og target kan angives i web.config.

Hvis der er nogle der gerne vil se det sidste kan i bare skrive her - så skal jeg nok lægge det ud.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester