2010-02-17 6 views
2

J'ai des difficultés à utiliser le processus BCP SQL pour charger mes tables avec des données. Je l'appelle à partir d'une application .NET, donc j'exécute l'exécutable xp_cmdshell pour exécuter la commande bcp. Voici ce qu'un de ces commandes ressemble à: « »Base de données BCP avec période dans le nom

EXEC master..xp_cmdshell 'bcp "[D001Test.Restore].[dbo].[GeneralComments]" in "<DataFile>" -q -c -t "|_|" -r "|+~+|" -k -V80 -a33000 -E -STest' 

Lorsque le nom de la base, je suis importer dans (dans ce cas D001Test.Restore) a dans le nom, la commande bcp échoue. Y at-il un moyen de contourner cela? J'ai essayé à la fois avec et sans les crochets. Je peux devoir importer les données dans une nouvelle base de données, et le renommer au nom désiré après qu'il soit fait.

Répondre

2

Vous n'avez pas besoin et l'argument -q les guillemets. Les états de documentation les éléments suivants à propos de l'argument q:

Utilisez cette option pour spécifier une base de données, propriétaire , table ou nom de la vue que contient un espace ou un guillemet . Entourez la table complète en trois parties ou affichez le nom entre guillemets ("").

Le nom de votre base de données ne contient ni espace ni guillemet simple.

Essayez ceci:

bcp [D001Test.Restore].dbo.GeneralComments in "<DataFile>" -c -t "|_|" -r "|+~+|" 
-k -V80 -a33000 -E -STest 
+0

Je vous remercie de la réponse. Je vais le tester. Cependant, j'ai toujours le problème où le nom de la base de données a un espace et une période dans le nom. J'ai provisoirement implémenté une solution pour utiliser une table temporaire avec des traits de soulignement remplaçant les points, mais c'est un concept plutôt moche. – Kevin

+1

@Kevin Si vous avez un espace et une période dans le nom de la base de données, vous avez besoin des guillemets. bcp "[D001 Test.Restore] .dbo.GeneralComments" dans "" -c -t "| _ |" -r "| + ~ + |" -k -V80 -a33000 -E -STest – Bill

+0

@Bill Malheureusement cela ne fonctionne pas. Si vous utilisez les guillemets, le processus bcp doit être programmé pour rechercher les périodes, indépendamment des parenthèses. Donc ceci: EXEC master..xp_cmdshell 'bcp' [D019Restore.Generic Test] .dbo.GeneralComments "out" Kevin

Questions connexes