CSV in access DB importieren

A

agentone

kann mir jemand helfen? Ich benötige einen ASP Skript der eine CSV Datei via Formular ín eine Access DB importiert. (ähnlich import php myadmin)

Habe schon einige Versuche gestartet nix hat richtig funktioniert :-(

Wer kann helfen?? Ich verzweifel noch!
 
hi,
wieso funzed das nicht?


einfach:

leere datenbank erstellen.. dann

datei - externe daten - importieren

textdatei (*.cvs) (steht da büschen weiter unten bei dateityp)

joa und dann den anweisungen folgen und fertig
 
CSV import

Nein ich meinte natürlich einen ASP Skript.. quasi HTML Formular sendet eine csv datei (client seitig) an einen asp skript welcher die csv daten in eine online access db einfügt..
 
na aber..

Sieht so aus als wenn ich der einzigste bin der sich dafür interessiert :)
 
hi,
naja ich denke mal der hauptgrund ist der, das einige einfach dann nicht mehr mit einer db arbeiten und einfach ein dsn zu der csv machen :)

naja hab mal gesucht.. das einige, was ich bis jetzt gefunden habe ist die möglichkeit eines fso (filesystemobject) die datei auszulesen und dann in eine neue table zu packen.

Code:
Dim cnn 
Dim cmd 
Dim rst 

set cnn=server.createobject(ADODB.Connection")
set cmd = server.createobject(ADODB.Command")
set rst = server.createobject(ADODB.Recordset")

'Test is a DSN created using Microsoft Text Driver
cnn.Open "test"

cmd.ActiveConnection = cnn

cmd.CommandText = "Select * from samplecsv.csv"

Set rst = cmd.Execute()

Do While Not rst.EOF

lstr = rst!site
lstr1 = rst!creative
lstr1 = rst!Timeslot
lstr2 = rst!section
lstr2 = rst.Fields(4) 'targeted values
lstr2 = rst.Fields(5) 'targeted impression
rst.MoveNext

Loop
 
oder so

1. csv datei hochladen

2. das script geht davon aus, das du 4 felder hast in der csv datei und in der tabelle - in der gleichen reihenfolge.

Code:
<%
Dim objConn, objFSO, objTF, myRow
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "myDSN" ' öffnen der vorhanden db, kannst auch dsn less machen...
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
SetobjTF = objFSO.OpenTextFile("mydata.csv",ForReading , false) ' öffnen der csv datei.. 
do while not objTF.AtEndOfStream
myRow = Split(objTF.Readline, ",")
objConn.Execute "INSERT INTO myTableName (col1, col2, col3, col4) VALUES (myRow(0), myRow(1), myRow(2), myRow(3))"
loop
objTf.Close
objConn.Close
Set objTF = Nothing
Set objConn = Nothing
Set objFSO = Nothing
%>

müsste funzen!
 
Erfolg und neues Problem

Ich habe jetzt nach 2 Tagen power working und grauen Haaren einen Skript geschrieben (gebastelt)...

Funktioniert supi und ermöglicht noch diverse Einstellungen :)
Habe mal den Skript hinzugefügt damit man es selbst ausprobieren kann..

Das neue Problem...

Wer kann helfen? Er trägt alles supi aus der CSV Datei ein nur dürfen keine leeren Felder (;; quasi NULL) sein.. bemerkt habe ich schon das er durch das neu Anlegen der Tabelle die Felder auf NOT Null setzt :-(
Kann sie auch nich einfach auf NULL ändern da er beim nächsten Import die Felder wieder auf NOT NULL setzt.. ein Teufelskreis :)

Wie kann ich den Skript ändern das auch leere Felder (;; quasi NULL) aus der CSV Datei akzeptiert werden?

Please help

PS.: Danke TTREK für deine aktive Unterstützung! :)
 

Anhänge

  • importcsv3.zip
    12,8 KB · Aufrufe: 801
Hi

Du kannst es mal mit folgendem Scriptcode probieren.
Allerdings legt dieser eine ganz neue Tabelle an, so dass eine bereits vorhandene erst gelöscht werden muss. Eignet sich, wie gesagt, nur für eine Neuanlegen.

Code:
Dim strFilePath
            strFilePath = Server.MapPath("./database/")
 sqlCommand= "SELECT * " & _
                        "INTO tabelle "  & _
                        "FROM [datei.csv] " & _
                        "IN """ & strFilePath & """ ""TEXT;"""
 objConn.Execute sqlCommand

Textfelder, Zahlenfelder und auch Memo wird erkannt. Allerdings setzt er keinen Autowert bzw. pk. Dies könnte man mit Alter Table bzw. ADOX updaten.
 
gibt es eigentlich unterschiede in einer csv-Datei?
wenn ich eine muster-CSV in Excel öffne habe ich alles schön in Spalten. Bei meiner nicht, obohl die identisch aufgebaut sind. Ich hab nur mehr spalten.

und was hat eigentlich das """ ""text;""" im statement zu bedeuten?
 
Zuletzt bearbeitet:
Zurück