2017-07-12 8 views
1

exporter des données à partir d'une vue SQL (SQL Server 2005) avec un emploi sql à un fichier csv:SQL Voir l'exportation au format CSV par SQLCMD - numéros de format Excel des champs varchar à exposant de syntaxe

sqlcmd -W -s ";" -E -d master -Q "SET NOCOUNT ON; SELECT * FROM [DB].[NameOfView];" -o "\\Location\File.csv" 

En la vue sql est un champ (type Varchar (20)) avec des nombres souvent supérieurs à 15 caractères. Pour ce champ, je viens d'utiliser une simple déclaration:

SELECT Fieldname AS Name FROM DB 

... rien de spécial.

Quand j'ouvre le fichier csv Excel formate le terrain avec le long numéro à un format avec la syntaxe de l'exposant:

enter image description here

Est-il possible de modifier quelque chose dans la requête ou le travail sqlcmd dire excelle de ne pas faire ça? Je pense à définir le résultat en texte et non en nombre en sql ou quelque chose comme ça (mais c'est déjà un champ varchar et j'ai aussi essayé des choses comme '' '' + Fieldname et donc ... -.-)

Je ne suis pas capable de changer quelque chose dans Excel parce que beaucoup de gens devraient avoir accès au CSV - sinon ils doivent tous faire des réglages dans Excel.

Ils devraient ouvrir le csv et tout semble bien (:

Merci pour votre aide/idées

Répondre

1

-t

SELECT '"' + Fieldname + '"' AS Name FROM DB 

fonctionne pas Cela devrait provoquer des guillemets doubles apparaissent dans le? .csv et Excel pour le traiter comme texte

Editer: essayer

SELECT '"=""' + Fieldname + '"""' AS Name FROM DB 

(La réponse ci-dessus suppose que les guillemets doubles ne nécessitent pas d'échappement supplémentaire dans la chaîne SQL, étant donné qu'il utilise des guillemets simples pour les littéraux textuels, donc si aucune joie ne vérifie cela. Vous visez à ressembler

« = » « 0,00000014567897354354 » « »

dans le CSV)

Voir aussi https://superuser.com/questions/318420/formatting-a-comma-delimited-csv-to-force-excel-to-interpret-value-as-a-string

+0

il le fait, mais je vois aussi les citations dans Excel comme: '1138024010424772' – Starburst

+0

Essayez SELECT '"=" "' + Fieldname + '" ""' AS Nom FROM DB – BenTaylor

+0

Parfait, merci :-) Dans Excel le champ montre le nombre entier sans syntaxe exposant maintenant – Starburst