25. april 2001 - 11:07Der er
75 kommentarer og 1 løsning
Importere *.txt filer til Accessdatabase via asp side
Hei! Jeg mottar en del .*txt filer på mail som jeg legger i en mappe. Alle disse txt filene har forskjellige filnavn. og txt filene er semikolondelt. Er det noen mulighet for å lage et script som automtisk tar å importerer disse .*txt filene til en bestemt database og sletter txt filene når de er ferdig importert? Øverste linje i txt filene innholder feltnavnene i access databasen. - Trenger kun en enkel side men en knapp som heter \"importer\" og scriptet som ligger i bakrund selvfølgelig. Håper noen kan hjelpe!
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
hmmm...det er ikke særlig smart å legge selve filene i databasen. Du skal heller legge inn navnet på filene, og når du skal bruke dem, så henter du filnavnene fra databasen, åpner selve filen og parser igjennom den...
prøv dette...(test på filer som du kan slette...lag noen \"fake\"filer med samme struktur som de \"ekte\" filene):
<% Set Conn Server.CreateObject(\"ADODB.Connection\")
############################# # ÅPNE DIN CONNECTION HER! # #############################
Set myFileObject = Server.CreateObject(\"Scripting.FileSystemObject\") Set myFolder = myFileObject.getFolder(\"c:\\[din folder]\"); Dim SQL, col SQL = \"\" element for each file in myFolder Set myFile = myFileObject.openTextFile( file, ForReading ) SQL = SQL & \"INSERT INTO [dintabell] (\"\'Butikk,Enhetsnummer,Poststednavn,Poststedadresse,Besoksadresse,Telefon) VALUES \"
strLine = myFile.readLine valArr = SPLIT(strLine,\";\") for i = 0 to UBOUND(valArr) SQL = SQL & valArr(i) if( i <> UBOUND(valArr) ) then SQL = SQL & \", \" end if next SQL = SQL & \") VALUES (\" strLine = myFile.readLine valArr = SPLIT(strLine,\";\") for i = 0 to UBOUND(valArr) SQL = SQL & \"\'\" & valArr(i) & \"\'\" if( i <> UBOUND(valArr) ) then SQL = SQL & \", \" end if next SQL = SQL & \")\" Conn.execute( SQL ) response.write myFile & \" saved and deleted<br>\" myFile.delete next response.write \"<br><b>All done!!</b>\" Conn.Close set myConn = nothing %>
Men, blir denne linen riktig?: \"SQL = SQL & \"INSERT INTO test1.mdb (\"\'Butikk,Enhetsnummer,Poststednavn,Poststedadresse,Besoksadresse,Telefon) VALUES \" Tenkte på hvilken tabell den skal inn i? Jeg har nå laget en database som heter \"test\" og en tabell som heter \"test1\".
<% Set Conn Server.CreateObject(\"ADODB.Connection\")
############################# # ÅPNE DIN CONNECTION HER! # #############################
Set myFileObject = Server.CreateObject(\"Scripting.FileSystemObject\") Set myFolder = myFileObject.getFolder(\"c:\\[din folder]\") Dim SQL, col SQL = \"\" for each file in myFolder Set myFile = myFileObject.openTextFile( file, ForReading ) SQL = SQL & \"INSERT INTO [dintabell] (\"
strLine = myFile.readLine valArr = SPLIT(strLine,\";\") for i = 0 to UBOUND(valArr) SQL = SQL & valArr(i) if( i <> UBOUND(valArr) ) then SQL = SQL & \", \" end if next SQL = SQL & \") VALUES (\" strLine = myFile.readLine valArr = SPLIT(strLine,\";\") for i = 0 to UBOUND(valArr) SQL = SQL & \"\'\" & valArr(i) & \"\'\" if( i <> UBOUND(valArr) ) then SQL = SQL & \", \" end if next SQL = SQL & \")\" Conn.execute( SQL ) response.write myFile & \" saved and deleted<br>\" next
for each file in myFolder Set myFile = myFileObject.getFile( file ) myFile.delete next
hmmm....jeg kan ikke se hva som er galt...kan du prøve å kjøre dette enkle scriptet ? <% Set myFileObject = Server.CreateObject(\"Scripting.FileSystemObject\") Set myFolder = myFileObject.getFolder(\"c:\\[din folder]\") for each file in myFolder Set myFile = myFileObject.getFile( file ) response.write \"Fil: \" & myFile & \"<br>\" next %>
Testet dette skriptet og det fungerte. Fant det hos microsoft: <% \'Reference the FileSystemObject set FSO = Server.CreateObject(\"Scripting.FileSystemObject\")
\'Reference the Text directory set Folder = FSO.GetFolder(\"d:\\pks\\admin\\pibfiler\")
\'Reference the File collection of the Text directory set FileCollection = Folder.Files
Response.Write(\"VBScript Method<BR>\")
\'Display the number of files within the Text directory Response.Write(\"Number of files found: \" & FileCollection.Count & \"<BR>\")
\'Traverse through the FileCollection using the FOR EACH...NEXT loop For Each FileName in FileCollection
<% Set Conn = Server.CreateObject(\"ADODB.Connection\")
############################# # ÅPNE DIN CONNECTION HER! # #############################
\'Reference the FileSystemObject set FSO = Server.CreateObject(\"Scripting.FileSystemObject\")
\'Reference the Text directory set Folder = FSO.GetFolder(\"d:\\pks\\admin\\pibfiler\")
Dim SQL, col SQL = \"\"
\'Reference the File collection of the Text directory set FileCollection = Folder.Files
\'Traverse through the FileCollection using the FOR EACH...NEXT loop For Each FileName in FileCollection strFileName = FileName.Name Set myFile = myFileObject.openTextFile( strFileName, ForReading ) SQL = SQL & \"INSERT INTO [dintabell] (\"
strLine = myFile.readLine valArr = SPLIT(strLine,\";\") for i = 0 to UBOUND(valArr) SQL = SQL & valArr(i) if( i <> UBOUND(valArr) ) then SQL = SQL & \", \" end if next SQL = SQL & \") VALUES (\" strLine = myFile.readLine valArr = SPLIT(strLine,\";\") for i = 0 to UBOUND(valArr) SQL = SQL & \"\'\" & valArr(i) & \"\'\" if( i <> UBOUND(valArr) ) then SQL = SQL & \", \" end if next SQL = SQL & \")\" Conn.execute( SQL ) response.write strFileName & \" saved<br>\"
Next
\'De-reference all the objects set FileCollection = Nothing set Folder = Nothing set FSO = Nothing
hmmm....det er tydelig at du sitter med en gammel version av ASP på serveren. Kan du ikke sende meg linken til det stedet hvor du fant det scriptet du postet til meg, så skal jeg se om jeg ikke kan finne ut av noe.
Du er UTROLIG dyktig, nute!!!!! Selvfølgelig hadde det sniket seg inn et semikolon der. Datene kom inn i databasen, men denne meldingen kom:122107.txt saved
Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'
[Microsoft][ODBC Microsoft Access Driver] Mangler semikolon (;) i slutten av SQL-setningen
Jeg fikk lagt inn delete fuktionen selv. Men meldingen som er over kommer helt til det kun er 1 fil igjen i mappen, eller hvis det ligger kun en filn i mappen. Jeg må trykke på oppdater x antall ganger for å komme til den siste filen som ligger igjen i mappen. Når denne blir tatt kommer ikke feilmeldingen. Men du har gjort en bra jobb, så jeg gir deg dine point. (De er fortjent, nute!) Men hvis du hadde hatt løsningen på det siste problemet, så hadde denne vært perfekt!
jeg fikk mine points ja...etter en hel dags arbeide..pyha...men det var godt at det fungerte til sist :-D
det var bare hyggelig å hjelpe...selv takk
Knut
Synes godt om
Ny brugerNybegynder
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.