'da CSV dosyaları satır satırında nasıl okurum? Bir CSV dosyasını okumak ve "Çalışan" DB tablosuna eklemek zorunda olduğum bir ASP sayfası kullanıyorum. TestReader'ın bir nesnesini oluşturuyorum. Okunan CSV dosyasının satır/kayıt sayısına kadar yürütmek için nasıl döngü yazabilirim?VBScript
VBScript
cevap
Dosyayı kendiniz ayrıştırmaya çalışmayın, sadece başınızı ağrıtıyorsunuz. Yeni satır ve virgüllere ayırmaktan çok daha fazlası var.
Dosyayı bir kayıt kümesinde açmak ve bir db tablosu gibi okumak için OLEDB kullanabilirsiniz. Böyle bir şey:
Dim strConn, conn, rs
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("path to folder") & ";Extended Properties='text;HDR=Yes;FMT-Delimited';"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConn
Set rs = Server.CreateObject("ADODB.recordset")
rs.open "SELECT * FROM myfile.csv", conn
while not rs.eof
...
rs.movenext
wend
VBScript paslı, bu yüzden sözdizimini doğrulayın.
düzenleme: harpo'nun yorumu, alan tanımları hakkında iyi bir bakış açısı getiriyor. Bir schema.ini dosyasının tanımlanması, beklenen alanların sayısını ve veri tiplerini tanımlamanıza olanak tanır. Bakınız: Bir schema.ini dosyası tanımlayarak bunu halledebilirsiniz. bkz .: http://msdn.microsoft.com/en-us/library/ms709353.aspx
Neden CSV'yi takmıyorsunuz? Örneğin: Dan
SELECT * INTO MyTable FROM OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Data Source=F:\MyDirectory;Extended Properties="text;HDR=No"')...
[MyCsvFile#csv]
: http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.database.ado/2007-05/msg00057.html
Dikkat: alanına sayımı ilk satırda dayanmaktadır. Bu nedenle, alan sayısı dosyadaki herhangi bir noktada artarsa, ek alanları yakalayamazsınız. Bu benim durumumda önemliydi, ben de kendiminkini yaptım (VBScript'te olmasa da). – harpo
Bu doğrudur. Bir schema.ini dosyasını (http://msdn.microsoft.com/en-us/library/ms709353.aspx) tanımlayarak bu sınırlamayı önleyebilirsiniz. Bu ayrıca alanların veri türlerini (varsayılan olarak '0001', '1' olarak okunur) sağlar. –
Klasör yolundan sonra bir yarım virgül istersiniz - Server.MapPath ("klasöre yol";) - ama bu sadece bana CSV dosyamı ayrıştırmaya çalışıyorum saatlerimi kurtardı - teşekkürler! – whostolemyhat