Avatar billede dkkarpen Nybegynder
05. september 2000 - 12:58 Der er 17 kommentarer og
1 løsning

Flytning af data

Halløj

Jeg har importeret en ASCI fil. Det gik dog, men data er stillet mindre heldigt op.

Her er et eks.

Bognr | Feltkode | Feltkodeværdi |
80001  245        Titel
80001  260        Udgivelsesår
80001  700        Forfatternavn
80001  710        Udgivelelsessted

Kan jeg flytte på mine data så jeg får en opstilling ala dette?

Bognr | Titel | Udgivelsesår | Forfatternavn | udgivelsessted

Og hvordan?
Avatar billede godtnok Nybegynder
05. september 2000 - 13:59 #1
Jeg vil anbefale at du først importerer data fra ascii filen til excel. I Excel laver du så dine ændringer..... og så importerer du fra Access excel filen...

Det plejer jeg at gøre og det virker ret godt :)
Avatar billede dkkarpen Nybegynder
05. september 2000 - 14:06 #2
Det er ikke nogen holdbar løsning. Vi taler om mange tusinde poster.
Avatar billede sjensen Nybegynder
05. september 2000 - 14:20 #3
Kunne du ikke lave et lille program der indlæser asciifilen i en access DB ?

Jeg har et importprogram der bl.a. kan indlæse tekstfiler (kommaseparerede) i en access DB, og det opretter en tabel med felter afhængig af hhv. feltnavn, type og længde i første record af filen. Øvrige linier i filen er hver en record i DB\'en og de enkelte værdier er adskilt af et komma.

Men, du fortæller ikke noget om hvordan dine data ser ud i ascii filen, kun hvordan det kommer til at se ud i tabellen efter importen (hvis jeg har forstået det korrekt). Kunne du ikke vise et par linier eller 3 fra asciifilen ?
Avatar billede tigerdyr Nybegynder
05. september 2000 - 14:22 #4
Har du mulighed for at smide det gennem en SQL Server ?? (BCP - commandline util og DTS - gui, kan begge klare det...)
Ellers har du muligheden for at lave en ny tabel i din database med de felter du skal bruge i den korrekte rækkefølge og køre noget i stil med:
SELECT Bognr, Feltkode, Feltkodeværdi INTO DinNyeTabel FROM DinGamleTabel
(jeg er ikke sikker på om det også virker i Access)
og muligheden for at lave det i VBA kan jeg ikke hjælpe med...
Ellers må det næsten kunne lade sig gøre at lave en:
INSERT INTO DinNyeTabel VALUES(SELECT Bognr, Feltkode, Feltkodeværdi FROM DinGamleTabel)
Du skal så selvfølgelig blot sørge for at alle andre felter accepterer Null værdier.

Avatar billede dkkarpen Nybegynder
05. september 2000 - 14:25 #5
Ja jeg har mulighed for at køre det gennem SQL server 7.0 eller 2000.
Avatar billede dkkarpen Nybegynder
05. september 2000 - 14:27 #6
Hvordan gøres det?
Avatar billede privaten Nybegynder
05. september 2000 - 14:48 #7
Du kan smide denne ind i Access

Sub Import()
    Open \"c:\\MinInputFil.txt\" For Input As #1
    Open \"c:\\MinOutputFil.txt\" For Output As #2
 
    Dim i, BogNr, Titel, UdgAar, Forfatter, UdgSted As String
    Dim BogNrOffset, FeltkodeOffset, DataOffset As Integer
    BogNrOffset = 1
    FeltkodeOffset = 8
    DataOffset = 19
   
   
    While Not EOF(1)
        Line Input #1, i
        BogNr = Mid(i, BogNrOffset, 5)
        Titel = Mid(i, DataOffset)
        Line Input #1, i
        UdgAar = Mid(i, DataOffset)
        Line Input #1, i
        Forfatter = Mid(i, DataOffset)
        Line Input #1, i
        UdgSted = Mid(i, DataOffset)
        Print #2, BogNr + \" \" + Titel + \" \" + UdgAar + \" \" + Forfatter + \" \" + UdgSted
    Wend
    Close #1
    Close #2
End Sub

Du skal selv sætte offset på dine data + navngive input og outputfilnavne
Avatar billede tigerdyr Nybegynder
05. september 2000 - 14:49 #8
Jeg vil anbefale dig BCP eller DTS...
DTS (Data Transformation Services) er som nævnt grafisk (wizard)...(står som \"import and export data\" i start menuen...
Det vil være nærmest umuligt at gennemgå hvordan DTS skal bruges her, men kort fortalt, start DTS, vælg din source (textfile), opsætning, vælg destination (textfile) og på næste billede vil du så have en knap med teksten \"Transform\", hvor du kan ændre de ting der skal rettes...

God fornøjelse :o)

Avatar billede tigerdyr Nybegynder
05. september 2000 - 14:56 #9
BCP kræver vist at du først importerer data til SQL Serveren, herefter ekspoerterer igen med BCP, laver dine rettelser og impoterer for endelig at eksporte dine data til en \"normal\" tekstfil igen...
Hvis du benytter BCP, skal du i den tekstfil BCP laver gå ind og redigere i de første linier med feltnavnene osv.
eks.
7.0
3
1 SQLCHAR 0 10 \" \" 1 FName
2 SQLCHAR 0 40 \" \" 2 LName
3 SQLCHAR 0 120 \" \" 3 Address

Hvis du så vil ændre rækkefølgen af dine felter skal du rette det sidste tal... så hvis du vil bytte rundt på FName og LName skal det se sådan ud:
1 SQLCHAR 0 10 \" \" 2 FName
2 SQLCHAR 0 40 \" \" 1 LName
3 SQLCHAR 0 120 \" \" 3 Address

Hvis du vil tilføje:
7.0
4
1 SQLCHAR 0 10 \" \" 1 FName
2 SQLCHAR 0 40 \" \" 2 LName
3 SQLCHAR 0 120 \" \" 3 Address
4 SQLCHAR 0 30 \" \" 4 Country

Og hvis du vil fjerne et felt sætter du det bare til 0, eg:
7.0
4
1 SQLCHAR 0 10 \" \" 1 FName
2 SQLCHAR 0 40 \" \" 2 LName
3 SQLCHAR 0 120 \" \" 3 Address
4 SQLCHAR 0 30 \" \" 0 Country
Avatar billede tigerdyr Nybegynder
05. september 2000 - 14:56 #10
BCP kræver vist at du først importerer data til SQL Serveren, herefter ekspoerterer igen med BCP, laver dine rettelser og impoterer for endelig at eksporte dine data til en \"normal\" tekstfil igen...
Hvis du benytter BCP, skal du i den tekstfil BCP laver gå ind og redigere i de første linier med feltnavnene osv.
eks.
7.0
3
1 SQLCHAR 0 10 \" \" 1 FName
2 SQLCHAR 0 40 \" \" 2 LName
3 SQLCHAR 0 120 \" \" 3 Address

Hvis du så vil ændre rækkefølgen af dine felter skal du rette det sidste tal... så hvis du vil bytte rundt på FName og LName skal det se sådan ud:
1 SQLCHAR 0 10 \" \" 2 FName
2 SQLCHAR 0 40 \" \" 1 LName
3 SQLCHAR 0 120 \" \" 3 Address

Hvis du vil tilføje:
7.0
4
1 SQLCHAR 0 10 \" \" 1 FName
2 SQLCHAR 0 40 \" \" 2 LName
3 SQLCHAR 0 120 \" \" 3 Address
4 SQLCHAR 0 30 \" \" 4 Country

Og hvis du vil fjerne et felt sætter du det bare til 0, eg:
7.0
4
1 SQLCHAR 0 10 \" \" 1 FName
2 SQLCHAR 0 40 \" \" 2 LName
3 SQLCHAR 0 120 \" \" 3 Address
4 SQLCHAR 0 30 \" \" 0 Country
Avatar billede dkkarpen Nybegynder
05. september 2000 - 15:31 #11
Jeg kan rigtig få den DTS til at spille. Jeg vil gerne lave den første kollonne som row delimiter. Hvordan gør jeg det?
Avatar billede tigerdyr Nybegynder
05. september 2000 - 20:18 #12
Jeg er ikke helt sikker på at jeg er klar over hvad du vil...
Du bliver spurgt om en row delimiter (post afgrænsing) og en column delimiter (kolonne afgrænsning)...
Avatar billede tigerdyr Nybegynder
05. september 2000 - 20:19 #13
http://msdn.microsoft.com/library/psdk/sql/dtscon3_5.htm

En kort forklaring på import af en text fil via DTS
Avatar billede dkkarpen Nybegynder
11. september 2000 - 12:04 #14
Jeg har stadig ikke fået løst mit problem. Kan jeg sende min textfil så i kan se nærmere på det?
Avatar billede privaten Nybegynder
11. september 2000 - 14:15 #15
Send du bare til Privaten@forum.dk
Avatar billede privaten Nybegynder
15. september 2000 - 15:43 #16
Hvordan ser det ud nu?
Avatar billede dkkarpen Nybegynder
20. september 2000 - 13:42 #17
200 ekstra fuldt fortjent!
Avatar billede privaten Nybegynder
20. september 2000 - 14:17 #18
takker
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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

IT-JOB

BEC Financial Technologies

Senior Platform/System Engineer

Netcompany A/S

IT Consultant

Politiets Efterretningstjeneste

Forretningsanalytiker til PET's IT-afdeling

Capgemini Danmark A/S

AI Data Architect