Avatar billede petersen7913 Forsker
08. marts 2021 - 12:39 Der er 11 kommentarer og
3 løsninger

Importere csv fil

Jeg skal importere forskellige csv filer til min database. Når jeg søger på nettet er jeg ved at drukne i muligheder ....
Situationen er, at jeg står med den ønskede fil (objFilename) og extension er csv.
Jeg vil gerne kunne åbne filen, læse første line (som er overskrifter), læse hver enkelt overskrift ind i hver sin variabel (så kan jeg afgøre hvordan jeg skal håndtere rækkerne) og dernæst loope gennem rækkerne.

Nogle løsninger bruger OpenTextFile, nogle bruger TransferText Method ...
Nogle løsninger siger at man skal læse ind i en temporær tabel, andre gør ikke.
Jeg er meget åben for forslag men lige nu er jeg ved at drukne i at forsøge at 'flette' 5-6 forskellige løsninger sammen.

PS. Tak til jer, der plejer at hjælpe mig :) Jeg har ryddet op og få lukket diverse åbne spørgsmål.
Avatar billede terry Ekspert
08. marts 2021 - 13:13 #1
It sounds as though there is a lot of manual handling going on which is going to make it difficult to automate the process.

"læse hver enkelt overskrift ind i hver sin variabel (så kan jeg afgøre hvordan jeg skal håndtere rækkerne) og dernæst loope gennem rækkerne."

Is it necessary for you to “læse hver enkelt overskrift ind i hver sin variabel” to help you decide how to process the file(s)?

Is there no standard format in the file(s) ?
Avatar billede Gustav Ekspert
08. marts 2021 - 13:20 #2
Hvis det er en almindelig csv-fil, plejer det at være nok at linke den med TransferText og dernæst oprette en simpel select-forespørgsel med den linkede tabel som kilde.

I denne forespørgsel kan man så oprette grundlæggende filtrering og konvertering af data og feltnavne efter behov. Det er nemt, da man hele tiden kan checke resultatet. Når det er gjort, bruges forespørgslen til det videre - typisk tilføjelse til andre tabeller.

OpenTextFile el.lg. bruges mest, når kringlede filer skal indlæses, fx hvor teksten står i blokke, har mærkelige headere i flere niveauer, etc.
Avatar billede petersen7913 Forsker
08. marts 2021 - 13:30 #3
Jeg har 8 forskellige templates til 8 forskellige tabeller, som data skal ind i. Så hver enkelt fil/template er standard, men jeg skal vide hvilken af de 8 template jeg har fat i - hvilket kan hånteres på andre måder, men jeg tænkte at det her måske var smartere?

Men jeg skal f.eks. test at der ikke indlæses dubletter, der er opslag (ID), der skal passe til værdien (tekst) i en template og sidst, nogle af tabellerne er intersection tabeller, som jeg skal håndtere i min kode.

Det sidste er fordi jeg skal kombinere data udlæst fra forskellige systemer. Access skal afløse et stort og uoverskueligt regneark ;)
Avatar billede terry Ekspert
08. marts 2021 - 13:39 #4
Well I would make 8 different import specifications.If you want to automate the process of finding out which specification to use then you could import the file including header and then using some VBA you could check column names...and from that run the necessary import specification
Avatar billede terry Ekspert
08. marts 2021 - 13:42 #5
and you could, as Gustav suggest, use TransferText to link the table, and then using VBA to find column names to decide whichimport specifaction to us.
Avatar billede terry Ekspert
08. marts 2021 - 13:46 #6
"Men jeg skal f.eks. test at der ikke indlæses dubletter"
The destination tabels should have unique indexes, so that shouldnt be possible.
Avatar billede petersen7913 Forsker
08. marts 2021 - 14:08 #7
Tak, jeg forsøger med TransferText :)
Avatar billede terry Ekspert
08. marts 2021 - 14:15 #8
If you decide to use import specifications, then you can inlcude the name of the simport spec. when you use TransferText
https://docs.microsoft.com/en-us/office/vba/api/access.docmd.transfertext
Avatar billede petersen7913 Forsker
09. marts 2021 - 10:25 #9
Tak :)
Avatar billede petersen7913 Forsker
09. marts 2021 - 15:18 #10
Så fik jeg tid til at teste det - hold da op hvor er det nemt :)
Avatar billede terry Ekspert
09. marts 2021 - 15:51 #11
Cany you epxlain how you did it?
Did you make import specifications using import wizard?
Avatar billede petersen7913 Forsker
09. marts 2021 - 16:11 #12
Avatar billede terry Ekspert
09. marts 2021 - 16:35 #13
Thats good.
You probably know that you can save import/export steps as "saved imports/exports". These can't be used with TransferText, they have to be those created with the import/export wizard advanced option
Avatar billede petersen7913 Forsker
09. marts 2021 - 16:48 #14
Ja, jeg bruger save import/export en del når jeg udvikler og tester
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

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