Maandelijkse update MySQL database

Pagina: 1
Acties:
  • 56 views sinds 30-01-2008

  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Ik ben een beetje een nono wat betreft MySQL, maar ik wil het wel proberen...

Ik heb een MySQL database aangemaakt en gevuld met gegevens uit een CSV bestand. So far so good.
Nu is het zo dat er iedere maand een update van dat bestand komt, met nieuwe gegevens en wijzigingen. In het bestand zijn velden opgenomen die aangeven of iets nieuw is, of een wijziging.
Nu wil ik graag iedere maand dat bestand inlezen, en dus de wijzigingen en toevoegingen laten doen op de MySQL database.
Ik begrijp dat ik hiervoor een script moet maken, maar ik heb echt geen idee waar ik moet beginnen...

Welke held kan me hiermee helpen?

"Don't blow out my candle if you want yours to shine brighter..."


  • whoami
  • Registratie: December 2000
  • Laatst online: 08:43
crontab als je op Linux werkt is een keyword waar je mee kan beginnen.

https://fgheysels.github.io/


  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Oh sorry, MySQL draait hier op een 2000 machine, en het gaat me dus niet zozeer om het schedulen van die import/update, als wel het SQL-script op zich...

"Don't blow out my candle if you want yours to shine brighter..."


  • whoami
  • Registratie: December 2000
  • Laatst online: 08:43
Tja,
csv-bestandje inlezen, gegevens inserten in tabel.

't is toch zo moeilijk niet?

https://fgheysels.github.io/


Verwijderd

ga je maar eens verdiepen in SQL en dan in het begrip

SQL update:
code:
1
2
3
4
5
6
7
8
9
UPDATE tabelnaam
SET { kolomnaam = { expressie | NULL } } ...
[WHERE conditie ]

voorbeeldje

UPDATE ORDERS
SET STATUS = 'VERWERKT'
WHERE ORDERNR = '015'

misschien dat je er wat aan heb !

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

lees de handleiding over mysql_import eens :) (of moest die _ er nou niet in?)

  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Nee, de import op zich dus niet, maar ik kom er niet helemaal uit met het updaten van bestaande records...

"Don't blow out my candle if you want yours to shine brighter..."


  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Als je praat over het updaten van de database met die nieuwe file, bedoel je dat alleen de nieuwe dingen moeten worden geupdate of kan je ook de vorige helemaal weghalen en die niweuwe CSV erover heen gooien?

Je kan mysql ook in zogenaamde batch mode draaien. Dat houd in dat je de queries in een bestandenje zet en dan kan je mysql op een gegeven moment dat bestand laten uitvoeren en dan doet hij al die queries die in dat bestand staan.

Dus als je gewoon in een file de queries schrijft die je nodig hebt om die maandelijkse update te doen en dan met crontab onder linux of taskscheduler ofzo onder windows iedere maand dat uitvoeren.

...


  • whoami
  • Registratie: December 2000
  • Laatst online: 08:43
Wat lukt er precies niet bij het Updaten? Ken je het SQL statement er niet voor, andere problemen? Wat heb je al geprobeerd...

Een beetje meer info, het is voor ons ook warm.

https://fgheysels.github.io/


  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Op maandag 17 juni 2002 14:37 schreef EurOtiC het volgende:
ga je maar eens verdiepen in SQL en dan in het begrip

SQL update:
code:
1
2
3
4
5
6
7
8
9
UPDATE tabelnaam
SET { kolomnaam = { expressie | NULL } } ...
[WHERE conditie ]

voorbeeldje

UPDATE ORDERS
SET STATUS = 'VERWERKT'
WHERE ORDERNR = '015'

misschien dat je er wat aan heb !
Daar heb ik op zich wel iets aan, maar...

Stappenplan:
1. Ik heb gevulde database
2. Nieuw CSV-bestand komt binnen
3. ...?
...
893140173. De gegevens in de database zijn bijgewerkt.

Ik mis zeg maar even stap 3 t/m 893140173... :?

"Don't blow out my candle if you want yours to shine brighter..."


  • whoami
  • Registratie: December 2000
  • Laatst online: 08:43
3. CSV bestand inlezen
4. Tabellen updaten met waarden uit csv bestand.

https://fgheysels.github.io/


  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Op maandag 17 juni 2002 14:39 schreef whoami het volgende:
Wat lukt er precies niet bij het Updaten? Ken je het SQL statement er niet voor, andere problemen? Wat heb je al geprobeerd...

Een beetje meer info, het is voor ons ook warm.
Okay, de database bestaat uit adressen en dergelijke info, inclusief een uniek nummer. Die heb ik inmiddels primary key gemaakt, zodat daar geen dubbele meer in komen, das al positief :)
Ik snap alleen gewoon helemaal niet wat ik moet doen als ik de gegevens wil bijwerken, met de CSV file die ik krijg...

"Don't blow out my candle if you want yours to shine brighter..."


  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Op maandag 17 juni 2002 14:41 schreef whoami het volgende:
3. CSV bestand inlezen
4. Tabellen updaten met waarden uit csv bestand.
3. Inlezen in een andere database bedoel je, of in andere tabellen???

"Don't blow out my candle if you want yours to shine brighter..."


  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Heeft er anders iemand een linkje naar een uitgebreidere beschrijving van UPDATE dan op de MySQL site staat?

"Don't blow out my candle if you want yours to shine brighter..."


  • whoami
  • Registratie: December 2000
  • Laatst online: 08:43
Kijk eens in de P&W QuickStart, er staan daar een heleboel links in naar tutorials sites over SQL.

https://fgheysels.github.io/


Verwijderd

Windows heeft ook iets als taken die je eens in de maand kan uit voeren

Verwijderd

Om alvast 1 ding op te lossen

tik in de console: (dos-prompt zonder dos :) )

at 9:00 /every:1 mysql_import blabla

dan voert hij elke 1e van de maand dat commando uit.

Kan ook via Start=>Programs=>Accessoires=>System Tools=>Scheduled Tasks, maar vergeet nooit:

Real men don't click!!! (8>

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Misschien is het handig om te vertellen dat je dus of een script oid nodig hebt om de CVS in MySQL te zetten. Het probleem ligt niet bij het inserten of updaten maar meer van hoe krijg ik MySQL zover om de data in de CVS file te snappen ....

Verwijderd

Op maandag 17 juni 2002 19:17 schreef PolarBear het volgende:
Misschien is het handig om te vertellen dat je dus of een script oid nodig hebt om de CVS in MySQL te zetten.
Volgens mij kun je ook een IE venster openen op die manier.

  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Het importeren van de CSV (Comma Seperated Value) file is niet mijn probleem, dat lukt op zich.

Nogmaals de situatie:

MySQL database met namen adressen etc
Iedere maand komt er een CSV file binnen met daarin:
-Nieuwe namen, adressen etc
-Wijzigingen op bestaande namen,adressen etc
-Te verwijderen namen, adressen etc
-De uit te voeren actie wordt in een record aangegeven. Bijvoorbeeld waarde A = toevoegen, B=wijzigen, C=verwijderen

Die file moet dus ingelezen worden, en uitgevoerd worden. Daarvoor zal ik dus een SQL script moeten bouwen, maar wat voor structuur moet ik aan denken?

Eerst de data inlezen in een tijdelijke database, en dan daarvandaan updaten/toevoegen/verwijderen via het script?

En zo ja, hoe ziet zo'n script eruit? Ik verwacht niet dat iemand het voor me wil maken, maar misschien heeft iemand een soortgelijk script liggen?

"Don't blow out my candle if you want yours to shine brighter..."


  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Iemand?

"Don't blow out my candle if you want yours to shine brighter..."


  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Okay, Ik heb nu de volgende situatie:

Ik importeer de gegevens nu in een "tijdelijke" tabel in de database, met dezelfde indeling.
Wt ik nu dus zoek/moet maken, is een script dat zorgt voor een update van de gegevens als VSI_VEST_K = "C", toevoegen als VSI_VEST_K = "A" OR "B" en verwijderen als VSI_VEST_K = "D" OR "E" OR "H"

Ik hoop dat dit iets duidelijker is, en iemand me pleazzz kan helpen met het maken van zo'n script...

"Don't blow out my candle if you want yours to shine brighter..."


Verwijderd

Ga er gewoon lekker aan beginnen, zorg dat je een paar manuals erbij hebt (php.net en mysql.com) en kom hier terug als er iets niet lukt in je eigen script...

edit:

Misschien iets als (pseudocode):

Select X from tijdelijketabel;
if(X == "C"){
UPDATE paard in tabel aap
} elseif(X == "A" || X == "B"){
INSERT INTO aap paard VALUES blaat
} elseif(X == "D" || X == "E" || X == "F"){
DELETE FROM aap WHERE paard
}

  • Rtificial
  • Registratie: Juni 2001
  • Laatst online: 21-08 16:46

Rtificial

as fake as can be

Topicstarter
Op woensdag 19 juni 2002 09:22 schreef zellufs het volgende:
Ga er gewoon lekker aan beginnen, zorg dat je een paar manuals erbij hebt (php.net en mysql.com) en kom hier terug als er iets niet lukt in je eigen script...

edit:

Misschien iets als (pseudocode):

Select X from tijdelijketabel;
if(X == "C"){
UPDATE paard in tabel aap
} elseif(X == "A" || X == "B"){
INSERT INTO aap paard VALUES blaat
} elseif(X == "D" || X == "E" || X == "F"){
DELETE FROM aap WHERE paard
}
Hmmm, even kijken waar die hele dierentuin voor staat hoor...

Begrijp ik nou goed dat je de waarde paard vervangt door aap? Is aap dan een vaste waarde, dus letterlijk aap, os is dat de inhoud van het betreffende record?

"Don't blow out my candle if you want yours to shine brighter..."


  • whoami
  • Registratie: December 2000
  • Laatst online: 08:43
Dit is toch zo moeilijk niet?
Doe zoals Zellufs zegt,
overloop je tijdelijke tabel en kijk iedere keer wat de code is. Doe dan afhankelijk van de code het juiste statement (UPDATE, INSERT of DELETE).

Dit is toch echt wel een redelijk basic programmeerprobleem. Ik denk dat je met de tips die hier al aangebracht zijn gewoon verder moet kunnen.
Begin er dus gewoon aan, en heb je problemen dan kan je hier wel terecht.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.