13. april 2023 - 17:05Der er
11 kommentarer og 1 løsning
Fejl i indlæsning af CSV
Har kastet mig ud i Access efter en del års pause, så er en smule rusten i det.
Jeg har en CSV fil med oplysninger på en række elever, som jeg gerne vil have indlæst i min database.
Men jeg får følgende fejl, når jeg forsøger at indlæse den: "Tekstspecifikationens feltseparator er magen til decimalseparatoren eller tekstafgrænseren"
Opbygningen af filen er: Elevnr,"Navn","Fornavn","Efternavn","Klasse","Kontaktgruppe","Værelse","Mobil"
Jeg har også prøvet, hvor jeg har fjernet " uden held
Som erikjakobsen - men tjek lige først at komma ikke bruges til andet end feltseparator. Typisk i adressefelter kan data indeholde et komma. Det må du lave om til et unikt tegn - fx # eller £ . Derefter erstatter du komma med semikolon. Derrefter erstatter du # eller £ med komma - og så kan du importere..
Synes godt om
Slettet bruger
13. april 2023 - 19:32#3
Fejlen, du står overfor, skyldes sandsynligvis en inkompatibilitet mellem det format, som din CSV-fil er i, og de indstillinger, du har valgt under tekstimportguiden i Access.
Her er nogle løsninger, du kan prøve:
1. Skift feltseparator: Det ser ud til, at Access forventer et andet tegn som feltseparator end det, der bruges i din CSV-fil. Prøv at ændre feltseparatorindstillingen i tekstimportguiden til det korrekte tegn, der bruges i din CSV-fil. Dette kan være komma, semikolon eller et andet tegn, afhængigt af hvordan din CSV-fil er formateret.
2. Skift decimalseparator: Hvis din CSV-fil bruger et tegn som decimalseparator, der er forskelligt fra det, der er indstillet i dine Windows-regionsindstillinger, kan det også forårsage fejlen. Du kan ændre decimalseparatorindstillingen i Windows-regionsindstillingerne, så den stemmer overens med det tegn, der bruges i din CSV-fil.
3. Fjern tekstafgrænsere: Hvis din CSV-fil ikke bruger tekstafgrænsere, skal du sørge for at fjerne indstillingen for tekstafgrænsere i tekstimportguiden i Access.
4. Kontrollér filformat: Tjek også om din CSV-fil er gemt i et kompatibelt format. Nogle gange kan en fil gemmes med et forkert format eller have en forkert filtypetilknytning, hvilket kan føre til fejl under indlæsning i Access.
Hvis du stadig står overfor problemer efter at have prøvet ovenstående løsninger, kan det være en god idé at dobbelttjekke din CSV-fils format og indhold for at sikre, at det er i overensstemmelse med de indstillinger, du har valgt i Access tekstimportguide. Du kan også overveje at åbne CSV-filen i et tekstredigeringsværktøj som Notepad++ for at se om der er nogen usynlige specialtegn eller formateringsfejl, der kan forårsage problemer.
Synes godt om
Slettet bruger
13. april 2023 - 19:34#4
Andet oplysninger som kunne løse dette?
Fejlmeddelelsen "Tekstspecifikationens feltseparator ligner decimalseparatoren eller tekstseparatoren" betyder, at den afgrænsning, du har valgt til din CSV-fil, er den samme som den decimalseparator eller tekstseparator, der er indstillet i dine regionale indstillinger . For eksempel, hvis du har sat dit decimaltegn til et komma, og du har valgt et komma som afgrænsning for din CSV-fil, får du denne fejl.
For at rette denne fejl kan du enten ændre afgrænsningen for din CSV-fil, eller du kan ændre decimalseparatoren i dine regionale indstillinger.
For at ændre afgrænsningen for din CSV-fil, kan du bruge en teksteditor til at åbne filen og ændre afgrænsningerne til noget andet. For eksempel kan du ændre kommaer til semikolon.
For at ændre decimaladskilleren i dine regionale indstillinger kan du følge disse trin:
1. Åbn kontrolpanelet. 2. Klik på "Region og sprog". 3. Klik på fanen "Administrativ". 4. Klik på "Skift systemlokalitet". 5. Klik på fanen "Avanceret". 6. Indtast det nye decimaltegn i feltet "Decimalsymbol". 7. Klik på "OK". 8. Klik på "Anvend". 9. Klik på "OK".
Når du har foretaget disse ændringer, bør du være i stand til at importere din CSV-fil uden at få fejlmeddelelsen.
Her er nogle yderligere tips til at importere CSV-filer til Access:
§ Sørg for, at CSV-filen er i det korrekte format. Det mest almindelige format for CSV-filer er kommaseparerede værdier (CSV). § Sørg for, at afgrænsningerne i CSV-filen er de samme som de afgrænsninger, du har valgt i guiden Tekstimport. § Hvis du har problemer med at importere en CSV-fil, kan du prøve at bruge en anden teksteditor til at åbne filen og sikre dig, at afgrænsningerne er korrekte. § Hvis du stadig har problemer med at importere en CSV-fil, kan du prøve at bruge en anden datakilde, såsom et Microsoft Excel-regneark.
Jeg ændrede decimaladskilleren i Windows til punktum, så kunne jeg indlæse den.
Dog er der et eller andet i CSV-filen, der ikke er lavet korrekt (prøver at gribe fat i ham, der har dannet den). Som den er nu, indlæser den de enkelte poster i en linie. Mit bud er fordi der sker en fejl med indsættelse af " Kan se at i den originale fil er opbygningen: "Elevnr,""Navn"",""Fornavn"",""Efternavn"",""Klasse"",""Kontaktgruppe"",""Værelse"",""Mobil"""
Den kan simpelthen ikke finde ud af det, når , står før "
Et tillægsspørgsmål: Det bliver ikke mig, der bliver den endelige bruger af databasen, så det hele skal være så let som muligt. Ville det (hvis jeg ikke kan få det ændret direkte i udtrækket af CSV-filen) være muligt at lave en VBA kode (eller lign), der automatisk fjerner " og ændrer , til ; og så importerer filen til databasen, når man har valgt den?
At ændre decimaladskilleren i Windows kan have uønskede konsekvenser andre steder.
Og de der ""-ere er helt forkerte.
For at gøre det nemmest for modtageren af CSV-filen må du have fat i ham, der laver den. "-erne skal være i orden, og så er der grundlæggende to muligheder:
"pi",3.14
eller
"pi";3,14
Den nederste egner sig umiddelbart bedst til et dansk indstillet PC, da vi bruger komma til decimaladskiller, og derfor ikke kan bruge komma til feltadskiller. Standerden er så semikolon.
Synes godt om
Slettet bruger
15. april 2023 - 09:01#7
Ja, det er muligt at bruge VBA-kode eller et andet script til at ændre formatet af din CSV-fil, fjerne " og ændre , til ; og derefter importere filen til din database i Access. Der er flere måder at gøre dette på og er op til dig og hvilken du gerne vil benytte. Men husk, endeligt at lave en backup af originalen bare for at være sikker.
Her er et eksempel på, hvordan du kan gøre det:
1. Åbn CSV-filen i Access ved hjælp af VBA-kode:
------------------ vba
Dim strFilePath As String strFilePath = "C:\Sti\Til\Din\CSV\Fil.csv" 'Angiv stien til din CSV-fil her
Dette er et eksempel, og du kan tilpasse koden efter dine specifikke krav og filformat. Det er dog vigtigt at huske at tage en backup af din CSV-fil, før du ændrer den, og at teste koden grundigt for at sikre, at den fungerer korrekt med dine data, før du implementerer det i din produktionsdatabase. Tre andre eksempler eller tiltag kommer snart.
Synes godt om
Slettet bruger
15. april 2023 - 09:05#8
Det andet, det er muligt at oprette en VBA-kode, der automatisk fjerner " og ændrer , til ; og derefter importerer filen til databasen, når du har valgt filen. Her er koden:
------------------ vba
Sub ImportCSV()
'Declare variables Dim strFile As String Dim strData As String Dim i As Long
'Set the file path strFile = "C:\Sti\Til\Din\CSV\Fil.csv"
'Open the file Open strFile For Input As #1
'Read the file line by line Do Until EOF(1)
'Read the line Line Input #1, strData
'Remove the double quotes strData = Replace(strData, """", "")
'Change the commas to semicolons strData = Replace(strData, ",", ";")
'Import the data into the database CurrentDb.Execute "INSERT INTO YourTable (StudentNumber, Name, FirstName, LastName, Class, ContactGroup, Room, Mobile) VALUES (" & strData & ")", dbFailOnError
Loop
'Close the file Close #1
End Sub ------------------
For at bruge denne kode skal du blot kopiere og indsætte den i et nyt modul i Visual Basic Editor (VBE). Gem derefter modulet og placer markøren hvor som helst inde i koden. Tryk på F5 for at køre koden. Koden åbner automatisk CSV-filen, fjerner de dobbelte anførselstegn, ændrer kommaerne til semikolon og importerer dataene til databasen.
Synes godt om
1 synes godt om dette
Slettet bruger
15. april 2023 - 09:07#9
Tredje, det er muligt at oprette en VBA-kode, der automatisk fjerner " og ændrer , til ; og derefter importerer filen til databasen, når du har valgt filen. Her er koden:
------------------ vba
Sub ImportCSV()
'Set variables Dim strCSVFile As String Dim strFileContents As String Dim strLine As String Dim strStudentNumber As String Dim strName As String Dim strFirstName As String Dim strLastName As String Dim strClass As String Dim strContactGroup As String Dim strRoom As String Dim strMobile As String
'Get the path to the CSV file strCSVFile = Application.GetOpenFilename("CSV Files (*.csv), *.csv")
'If the user cancels the dialog, exit the sub If strCSVFile = False Then Exit Sub
'Open the CSV file Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(strCSVFile)
'Read the contents of the file strFileContents = objFile.ReadAll
'Close the file objFile.Close
'Split the file contents into lines strLines = Split(strFileContents, vbCrLf)
'For each line in the file, do the following For Each strLine In strLines
'Remove the quotation marks strLine = Replace(strLine, """", "")
'Replace the commas with semicolons strLine = Replace(strLine, ",", ";")
'Split the line into columns strColumns = Split(strLine, ";")
'Assign the values of the columns to variables strStudentNumber = strColumns(0) strName = strColumns(1) strFirstName = strColumns(2) strLastName = strColumns(3) strClass = strColumns(4) strContactGroup = strColumns(5) strRoom = strColumns(6) strMobile = strColumns(7)
'Import the record into the database '...
Next
'Close the file objFSO.Close
End Sub ------------------
For at bruge denne kode skal du blot kopiere den til et nyt modul i Excel og gemme modulet. Når du derefter vil importere en CSV-fil, skal du åbne modulet og klikke på knappen "Importer CSV". Koden fjerner automatisk anførselstegnene og ændrer kommaerne til semikolon i CSV-filen, og derefter importerer den filen til databasen.
Synes godt om
1 synes godt om dette
Slettet bruger
15. april 2023 - 09:09#10
Sure, det er muligt at oprette en VBA-kode, der automatisk fjerner " og ændrer , til ; og derefter importerer filen til databasen, når du har valgt filen. Her er koden:
------------------ vba
Sub ImportCSV()
Dim csvFile As String Dim csvData As String Dim csvRow As String Dim csvField As String Dim i As Integer
'Get the path of the CSV file csvFile = Application.GetOpenFilename("CSV Files (*.csv), *.csv")
'If the user did not select a file, exit the procedure If csvFile = False Then Exit Sub
'Open the CSV file Open csvFile For Input As #1
'Read the CSV file line by line Do While Not EOF(1)
'Get the next line of data Line Input #1, csvData
'Split the line of data into fields csvRow = Split(csvData, ",")
'For each field in the line of data For i = 1 To UBound(csvRow)
'Remove the quotation marks from the field csvField = Replace(csvRow(i), """", "")
'If the field contains a comma, change it to a semicolon If InStr(csvField, ",") > 0 Then csvField = Replace(csvField, ",", ";") End If
'Next i Next i
'Import the line of data into the database CurrentDb.Execute "INSERT INTO tablename (field1, field2, field3, ...) VALUES (" & Join(csvRow, ", ") & ")", dbFailOnError
Loop
'Close the CSV file Close #1
End Sub ------------------
For at bruge denne kode skal du blot kopiere og indsætte den i et nyt modul i Excel. Gem derefter modulet og placer markøren hvor som helst i koden. Tryk på F5 for at køre koden. En dialogboks vises, så du kan vælge den CSV-fil, du vil importere. Når du har valgt filen, vil koden automatisk fjerne anførselstegnene og ændre kommaerne til semikolon i CSV-filen. Koden vil derefter importere dataene til databasen.
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.