Question

Je dois exporter des données à l'aide de SQL Server 2000 de l'utilitaire BCP. Parfois, mes données contient des caractères, tels que \ t \ n, que je dois utiliser comme terminateurs de colonnes et de lignes. Comment puis-je BCP pour échapper à des personnages qu'il utilise comme terminateurs comme il fournit les données, afin que je puisse effectivement importer les données dans un autre programme?

Par exemple, une de mes colonnes sont des données de texte et comprend des onglets et des sauts de ligne. BCP juste les exportations comme-est, et le programme que je suis en train de les importer avec est confus parce que les données se termine au milieu d'une ligne et / ou une ligne contient des colonnes supplémentaires sans raison apparente.

Cela semble être un très, très, très fonction de base à inclure dans un exportateur de données, mais aucun d'entre les options de ligne de commande semblent mentionner. (Pourquoi ce ne serait pas seulement la valeur par défaut est au-delà de moi.) Est-ce que je manque quelque chose?

Était-ce utile?

La solution

Vous ne pouvez pas avoir des données contenant des onglets et des sauts de ligne avec des onglets et des séparateurs de nouvelle ligne. Cela n'a aucun sens. Escaping ne serait pas utile, parce qu'un onglet est un onglet. Nous ne parlons pas c # chaîne de manutention ici.

Ce que je ferais est d'utiliser différents terminateurs tels que | et ||/n, ou utilisez un fichier

Autres conseils

Totalement d'accord avec vous: Évasion devrait être une option. « Vous ne pouvez pas avoir des données avec des onglets ou des sauts de ligne » est la chose la plus stupide que j'ai jamais entendu.

Voici une solution possible:

  1. utilisez l'option -r pour définir une terminaison de ligne différente. quelque chose
    peu susceptibles d'être présentes dans vos données (#! # $ #% #). Je pense que vous pouvez utiliser plusieurs
    caractères, de sorte que facilite.
  2. Ouvrez votre fichier de données dans sed, un éditeur de texte capable, ou écrire un script - et remplacer tout \ n et le caractère de \ t avec leurs équivalents échappées (\\ n \\ et t). Enfin remplacer votre terminaison de ligne \ n et vous devriez être bon.
  3. Je pense que la même chose devrait s'appliquer à l'aide pour -t terminateurs de champ

Jetez un oeil à cet article pour plus d'informations .

Vous pouvez utiliser un séparateur composé de plusieurs caractères si vous les mettez entre guillemets:

bcp MY_TABLE out C:\MY_FILE.txt -S SERVER_IP -d DB_NAME -U MY_USER -P MY_PASSWORD -w -t "&#)^@" -r ">~+!"

.

J'ai le même problème et cherché longtemps pour trouver une solution. J'ai trouvé celui-ci d'un maître BCP et il semble raisonnable. Peut-être que vous voulez essayer aussi.

Solution possible: http: // groupes. google.co.uk/group/microsoft.public.sqlserver.tools/tree/browse_frm/thread/f1ee12cba3079189/ef9094123901fe26?rnum=1&q=lindawie+format+file&_done=%2Fgroup%2Fmicrosoft.public.sqlserver.tools%2Fbrowse_frm%2Fthread % 2Ff1ee12cba3079189% 2Fef9094123901fe26% 3Ftvc% 3D1% 26Q% 3Dlindawie% 2Bformat% 2Bfile% 26 # doc_fa5708ca51d967a6

Détails du fichier Format et conception: http://msdn.microsoft.com/en-us /library/aa173859%28SQL.80%29.aspx

En général, je peux suggérer ces liens pour vous aider à connaître des problèmes de BCP et des solutions: http://groups.google.co.uk/groups?q=lindawie + Format + fichier

Cordialement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top