2010-10-28 168 views
0

我被要求构建一个web应用程序来报告存储在另一个系统中的信息。另一个系统被锁定,但会允许我将数据导出为csv文件。使用vbscript从web表单导入txt文件到sqlserver数据库

我想在我的应用程序上使用html表单,以便人们(夜班!)可以将数据从其他系统导入到我的web应用程序。

为了让其他人了解我一直在使用VBScript和尝试使用在所有数据库操作以下模式我的代码:

打开连接 生成查询 执行查询 做与结果的东西(如果合适的话) 关闭连接

是否可以使用此模式导入txt文件?即。纯粹基于SQL而不使用存储过程?

有没有人有代码示例?

希望是有道理的。

谢谢。

德里克

回答

2

一些注意事项。

Set cn = CreateObject("ADODB.Connection") 
''SQL Server Express and ODBC, more connection strings: 
''http://www.connectionstrings.com/sql-server-2008 
'' 
strcon = "ODBC;Description=Test;DRIVER=SQL Server;SERVER=Server\SQLEXPRESS;" 
strcon = strcon & "Trusted_Connection=Yes;DATABASE=Test" 

cn.Open strcon 
strSQL = "SELECT * INTO NewCSV " 
strSQL = strSQL & "FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0'," 
strSQL = strSQL & "'Text;HDR=Yes;FMT=Delimited;DATABASE=c:\docs\', " 
strSQL = strSQL & "'SELECT * FROM [Test.csv]');" 

cn.Execute strSQL, RecordsAffected 
MsgBox RecordsAffected 

您可能必须启用即席查询:http://technet.microsoft.com/en-us/library/ms187569.aspx 也可以使用文本的ACE提供商,但它可能会变得复杂起来:http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/ace

列混合型数据可以是一个问题CSV。 IMEX可以提供帮助,但前提是在注册表中设置的范围适合。

编辑再评论

上查看CSV数据的一些注意事项:

Set cn = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.Recordset") 
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Docs\;" 
strcon = strcon & "Extended Properties=""Text;FMT=Delimited;HDR=Yes;IMEX=1"";" 

cn.Open strcon 

strSQL = "Select * From [Test.csv]" 

rs.Open strSQL, cn 

MsgBox rs.GetString 
+0

感谢您的答复Remou。已经试过这个,并得到错误'临时访问OLEDB提供程序Microsoft.Jet.OleDB.4.0已被拒绝。您必须通过链接服务器访问此提供商'。我怀疑是因为我唯一可以访问的服务器是企业服务器,他们已经锁定了一切?我也尝试过BULK INSERT,并得到了类似的回应。我在某处解读文件时自己太头痛了,但觉得这可能是唯一的方法?! – Derek 2010-10-28 13:16:10

+0

我很困惑。你的意思是你不能在你导入CSV文件的服务器上启用临时查询,也就是说,你的Web应用程序不是你的?这两件事情是相同的,您从中导出CSV文件并将其导入到哪个服务器中? – Fionnuala 2010-10-28 13:37:59

+0

确实。它位于企业网络上,我可以通过ftp访问服务器,并使用服务器上的ms访问或asp页面查询数据库。 – Derek 2010-10-28 14:47:45

相关问题