2010-10-28 14 views
0

On m'a demandé de créer une application Web pour générer des rapports sur les informations stockées dans un autre système. L'autre système est verrouillé mais me permettra d'exporter des données en tant que fichier csv. Je voudrais utiliser un formulaire html sur mon application pour que les gens (le quart de nuit!) Puissent importer des données de l'autre système vers mon application Web.Importer le fichier txt d'un formulaire Web vers la base de données sqlserver à l'aide de vbscript

Pour permettre à d'autres personnes de comprendre mon code, je me sers de vbscript et d'essayer d'utiliser le modèle suivant dans toutes les opérations de base de données:

Ouvrir une connexion Générer une requête Exécuter la requête Faire quelque chose avec des résultats (le cas échéant Fermer la connexion

Est-il possible d'utiliser ce modèle pour importer un fichier txt? c'est à dire. purement SQL basé sans utiliser les procédures de magasin?

Est-ce que quelqu'un a un exemple de code?

Espérons que cela a du sens.

Merci.

Derek

Répondre

2

Quelques notes.

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 

Vous devrez peut-être permettre des requêtes ad hoc: http://technet.microsoft.com/en-us/library/ms187569.aspx Il est également possible d'utiliser le fournisseur de ACE pour le texte, mais il peut se compliquer: http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/MSSQLServer/ace

données mixtes dans les colonnes peuvent être un problème CSV. IMEX peut vous aider, mais seulement si la plage vérifiée, qui est définie dans le registre, est appropriée.

EDIT concernant des commentaires

Quelques notes sur l'affichage des données 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

Merci pour la réponse remou. Avoir essayé ceci et obtenir l'erreur 'L'accès Ad hoc au fournisseur OLEDB Microsoft.Jet.OleDB.4.0 a été refusé. Vous devez accéder à ce fournisseur via un serveur lié ". Je suspecte parce que le seul serveur auquel j'ai accès est un serveur d'entreprise et ils ont tout verrouillé? J'ai aussi essayé BULK INSERT et obtenu une réponse similaire. J'ai lu quelque part que l'analyse du fichier moi-même est trop mal à la tête mais que c'est peut-être le seul moyen ?! – Derek

+0

Je suis confus. Vous voulez dire que vous ne pouvez pas activer les requêtes ad hoc sur le serveur dans lequel vous importez le fichier CSV, c'est-à-dire que votre application Web ne vous appartient pas? Les deux choses sont-elles identiques, le serveur à partir duquel vous dérivez le fichier CSV et dans lequel vous importez le fichier? – Fionnuala

+0

En effet. C'est sur le réseau de l'entreprise et je peux ftp au serveur et interroger la base de données en utilisant l'accès ms ou les pages ASP sur le serveur. – Derek