2009-07-14 10 views
5

J'ai une table de produits dans SQL Server 2005 qui doit être mise à jour par certains champs dans un fichier csv. Les deux fichiers ont un numéro de pièce du fournisseur qui peut être lié à l'endroit où je peux mettre à jour le champ products.discontined avec un autre dans le fichier csv.tsql: meilleur moyen de mettre à jour une table db avec un fichier csv

Ma question est quelle est la meilleure façon d'aborder cela?

J'ai envisagé de créer une connexion ODBC au fichier Excel et de trouver comment fusionner les 2 colonnes. Importer le fichier csv entier (~ 60 Mo) dans une table temporaire dans le serveur SQL, puis écrire une procédure tsql pour rechercher, comparer, mettre à jour? faire aussi et commande opensource de l'analyseur de requête et de l'écriture d'une procédure à lire dans le fichier csv et mettre à jour la table de cette façon ..

merci à l'avance

+1

Est-ce une mise à jour constante ou une opération unique? Cela aidera à déterminer le meilleur chemin à prendre. –

+1

Est-ce que le CSV est propre? Citations IE échappées et similaires? –

+0

Veuillez noter: la balise 'sqlserver' a récemment été abandonnée au profit de 'sql-server'. –

Répondre

3

Si elle est disponible pour vous, votre meilleur pari avec SQL Server 2005 est le SQL Server Integration Services (anciennement Data Transformation Services ou DTS). Cela vous permettra de créer un paquet qui peut résider n'importe où et être exécuté sur un calendrier ou invoqué chaque fois que vous décidez. Il peut s'exécuter de manière asynchrone sur l'application qui l'appelle également.

mise à jour:
En outre, vous pouvez exécuter et déboguer le package pour le rendre parfait avant de décider de le publier. Cela vous permettra de tenir compte des choses telles que les documents malformés etc.

si vous ne pouviez pas vous avez SSIS à votre disposition puis faites un insert en vrac (référence: http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/)

créer une table qui correspond au contour de votre csv puis l'importer en utilisant les éléments suivants: à partir de là

BULK 
INSERT MyTable 
FROM ‘c:\mycsv.csv’ 
WITH 
(
    FIELDTERMINATOR = ‘,’, 
    ROWTERMINATOR = ‘\n’ 
) 

vous pouvez le transformer en utilisant tsql comme dans une table dans votre base de données. S'il s'agit d'une mise à jour constante, vous pouvez créer des tables temporaires pour effectuer votre travail et exécuter la procédure stockée en tant que travail.

+0

ce n'est pas disponible pour le moment. – phill

+0

mis à jour parce que vous n'avez pas accès à SSIS –

+0

vous pouvez également vouloir regarder ici: http://support.microsoft.com/kb/321686 depuis que vous mentionnez le fichier commence comme excel –

Questions connexes