2010-12-15 42 views
0

J'ai un proc sql qui retourne 20 000 enregistrements + et que vous voulez obtenir ces données dans un fichier CSV pour une opération de chargement en bloc SQL2005. Je pense que l'utilisation d'un ensemble de données est excessive car je n'ai besoin que d'un accès en lecture seule vers les données.Quel est le meilleur moyen de charger une grande quantité de données SQL dans .net et de générer un fichier CSV?

maintenant j'ai un lecteur de données, mais ne pense pas itératif le lecteur de données est une bonne idée car il verrouillera l'oracle DB je reçois les 20 000 enregistrements de quelque temps alors qu'il fait son truc.

logiquement je pense à créer un instantané déconnecté des données dans une table de données peut-être et l'utiliser pour générer mon fichier csv.

Je ne développe pas souvent de telles applications ETL donc je voulais savoir ce qui est la norme d'or sur ce type d'opération.

pensées?

également, permettez-moi de mentionner que cela doit être une application de la console puisque les règles CORP ne permettent pas les serveurs liés et rien de cool - ce qui signifie que SSIS est sorti.

+0

À moins que je ne me trompe, votre question se contredit. "Je pense que l'utilisation d'un ensemble de données est excessive car je n'ai besoin que d'un accès en lecture seule" vs "je pense à créer un instantané déconnecté des données dans un tableau de données". –

Répondre

1

Puisque vous êtes inquiet de faire vous-même l'itération du lecteur de données, je pourrais vous recommander d'utiliser la classe SqlBulkCopy.

Il vous permet de charger des données dans une base de données SQL Server à partir d'une source que l'on peut lire avec une instance IDataReader

pourrait résoudre votre problème de verrouillage potentiel.

+0

+1 Cela fonctionne bien pour les cibles MS SQL Server lorsque vous essayez de remplir une seule table à la fois. Cela ne résout pas le problème d'extraction si vous voulez un fichier CSV intermédiaire. –