|
| MS-SQL: Import af data fra csv-fil via HTT~ Fra : Steen Andreassen |
Dato : 02-05-07 17:15 |
|
Jeg er stødt ind i det problem, at jeg har behov for at importere data fra
en CSV-fil der ligger på en web-server.
I MS-SQL 2000 DTS er der mulighed for import af data fra fil, fra anden
DB-server eller via ftp. Men jeg har ikke kunnet finde noget på hvordan man
gør det via http.
Filen kan hentes fra intranettet via en browser med URL'en
http://servernavn/sti/til/filen/filnavn.csv
Jeg har kigget lidt på noget activeX i forbindelse med et DTS-job, men er
ikke kommet længere.
Måske skal der kodes en activeX programstump i VB for at hente filen ned til
en lokal placering, hvorefter man kan anvende DTS til at importere data fra
filen.
Alle gode råd er mere end velkomne.
Mvh
Steen
| |
Peter Lykkegaard (02-05-2007)
| Kommentar Fra : Peter Lykkegaard |
Dato : 02-05-07 20:09 |
|
Steen Andreassen wrote:
> Jeg er stødt ind i det problem, at jeg har behov for at importere
> data fra en CSV-fil der ligger på en web-server.
>
> Alle gode råd er mere end velkomne.
>
Hvorfor ikke gå over i den anden grøft og lave en lille applikation der kan
hente data via http og pushe ind på SQL serveren vha SQL-DMO?
Noget ala:
http://www.freevbcode.com/ShowCode.Asp?ID=1629
- Peter
--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!
| |
Steen Andreassen (02-05-2007)
| Kommentar Fra : Steen Andreassen |
Dato : 02-05-07 20:42 |
|
Jeg har overvejet enten at hente filen med enten wget for Win32, eller med
et lille PERL-script, og derefter køre et DTS-job, men kan godt se fordelen
i en bulk-copy, idet data bare skal "Skovles" råt ind i en temporær tabel
(ikke en #-tabel, men en tabel lavet til formålet), inden de bliver joinet
med andre tabeller.
/Steen
"Peter Lykkegaard" <plykkegaard@gmail.com> wrote in message
news:4638e1b7$0$47018$edfadb0f@dread16.news.tele.dk...
> Steen Andreassen wrote:
>> Jeg er stødt ind i det problem, at jeg har behov for at importere
>> data fra en CSV-fil der ligger på en web-server.
>>
>> Alle gode råd er mere end velkomne.
>>
> Hvorfor ikke gå over i den anden grøft og lave en lille applikation der
> kan hente data via http og pushe ind på SQL serveren vha SQL-DMO?
> Noget ala:
> http://www.freevbcode.com/ShowCode.Asp?ID=1629
>
> - Peter
>
> --
> Hi! I'm a .signature *virus*!
> Copy me into your ~/.signature to help me spread!
>
| |
Stig Johansen (03-05-2007)
| Kommentar Fra : Stig Johansen |
Dato : 03-05-07 04:51 |
|
Steen Andreassen wrote:
> Jeg har overvejet enten at hente filen med enten wget for Win32, eller med
> et lille PERL-script, og derefter køre et DTS-job, men kan godt se
> fordelen i en bulk-copy, idet data bare skal "Skovles" råt ind i en
> temporær tabel (ikke en #-tabel, men en tabel lavet til formålet), inden
> de bliver joinet med andre tabeller.
Jeg lavede noget ligninde for en kunde engang.
Konceptet var, at der 'periodisk' blev leveret en fil, og denne skulle
efterfølgende opdateres i et DW.
Hmm... lad mig lige tænke lidt tilbage....
Det hele foregik i et job, der blev afviklet 1 gang om dagen, eller på
anfordring.
Det var ca. følgende jobsteps:
1) Er der ankommet en ny fil? - Hvis nej afslut jobbet.
2) Slet arbejdstabel
3) Importer ny fil (BCP) til arbejdstabel
4) Udfør en masse SQL til opdatering fra arbejdstabel
5) Omdøb filen til navn.yymmdd.osv
Filen havde altid samme navn ved 'levering', og blev til sidst omdøbt for at
undgå dobbelte opdateringer.
Forskellen i forhold til dit koncept er, at de respektive
regnskabsansvarlige selv lagde filen op på serveren via FTP.
Automatikken gjorde at IT afdelingen ikke behøvede at blive involveret i den
månedlige opdatering.
Hvis du erstatter step 1 med wget eller lign., ser det for mig ud som om det
er ca. det samme du har brug for.
En anden måde som vi også brugte var at oprette filen som en 'ODBCtext
database', og derefter linke den ind.
På den måde kan du loade filen direkte via SQL statements.
Som du måske bemærker sker det her uden indblanding af DTS. Jeg har fået
lidt for mange grå hår af at redde mystiske DTS-ting, så jeg undgår dem
helst.
--
Med venlig hilsen
Stig Johansen
| |
Steen Andreassen (03-05-2007)
| Kommentar Fra : Steen Andreassen |
Dato : 03-05-07 07:03 |
|
Hej Stig....
Tak for svaret.
Det tyder på, at jeg ikke er helt på vildspor når jeg ikke umiddelbart har
kunnet finde noget om direkte import af data via HTTP-protokollen.
Schedulerede du dit job via SQL-agenten, eller via Windows's scheduler ?
Jeg tror at jeg går efter en Win-Batch løsning med wget, kald af et BCP-job,
og efterfølgende et kald til min stored procedure, som gør nøjagtig det
samme som du fik lavet i sin tid.
Mvh
Steen
"Stig Johansen" <stig_johansen_it_at_=(@)hotmail.com> skrev i en meddelelse
news:46395c76$0$90267$14726298@news.sunsite.dk...
> Steen Andreassen wrote:
>
>> Jeg har overvejet enten at hente filen med enten wget for Win32, eller
>> med
>> et lille PERL-script, og derefter køre et DTS-job, men kan godt se
>> fordelen i en bulk-copy, idet data bare skal "Skovles" råt ind i en
>> temporær tabel (ikke en #-tabel, men en tabel lavet til formålet), inden
>> de bliver joinet med andre tabeller.
>
> Jeg lavede noget ligninde for en kunde engang.
> Konceptet var, at der 'periodisk' blev leveret en fil, og denne skulle
> efterfølgende opdateres i et DW.
>
> Hmm... lad mig lige tænke lidt tilbage....
>
> Det hele foregik i et job, der blev afviklet 1 gang om dagen, eller på
> anfordring.
>
> Det var ca. følgende jobsteps:
> 1) Er der ankommet en ny fil? - Hvis nej afslut jobbet.
> 2) Slet arbejdstabel
> 3) Importer ny fil (BCP) til arbejdstabel
> 4) Udfør en masse SQL til opdatering fra arbejdstabel
> 5) Omdøb filen til navn.yymmdd.osv
>
> Filen havde altid samme navn ved 'levering', og blev til sidst omdøbt for
> at
> undgå dobbelte opdateringer.
>
> Forskellen i forhold til dit koncept er, at de respektive
> regnskabsansvarlige selv lagde filen op på serveren via FTP.
> Automatikken gjorde at IT afdelingen ikke behøvede at blive involveret i
> den
> månedlige opdatering.
>
> Hvis du erstatter step 1 med wget eller lign., ser det for mig ud som om
> det
> er ca. det samme du har brug for.
>
> En anden måde som vi også brugte var at oprette filen som en 'ODBCtext
> database', og derefter linke den ind.
>
> På den måde kan du loade filen direkte via SQL statements.
>
> Som du måske bemærker sker det her uden indblanding af DTS. Jeg har fået
> lidt for mange grå hår af at redde mystiske DTS-ting, så jeg undgår dem
> helst.
>
> --
> Med venlig hilsen
> Stig Johansen
| |
Peter Lykkegaard (03-05-2007)
| Kommentar Fra : Peter Lykkegaard |
Dato : 03-05-07 16:28 |
|
Steen Andreassen wrote:
>
> Schedulerede du dit job via SQL-agenten, eller via Windows's
> scheduler ?
Hver har sine charmer
SQL agenten har mulighed for fejl rapportering, men det kan man placere i
det program scheduler starter
- Peter
--
Hi! I'm a .signature *virus*!
Copy me into your ~/.signature to help me spread!
| |
Stig Johansen (04-05-2007)
| Kommentar Fra : Stig Johansen |
Dato : 04-05-07 03:22 |
|
Steen Andreassen wrote:
> Hej Stig....
>
> Tak for svaret.
>
> Det tyder på, at jeg ikke er helt på vildspor når jeg ikke umiddelbart har
> kunnet finde noget om direkte import af data via HTTP-protokollen.
> Schedulerede du dit job via SQL-agenten, eller via Windows's scheduler ?
Det var et job under SQL agenten.
> Jeg tror at jeg går efter en Win-Batch løsning med wget, kald af et
> BCP-job, og efterfølgende et kald til min stored procedure, som gør
> nøjagtig det samme som du fik lavet i sin tid.
Du kan sagtens udføre 'dos' kommandoer i steps under SQL agenten.
--
Med venlig hilsen
Stig Johansen
| |
|
|