J'ai passé 2 jours à essayer d'exporter une table de 75 000 lignes contenant un grand champ de texte contenant des données d'entrée utilisateur à partir d'une installation de serveur SQL. Ces données contiennent tous les caractères ASCII, tabulations et nouvelles lignes simples. J'ai besoin d'exporter CSV où chaque champ est cité, et les guillemets dans les colonnes citées sont correctement échappés ("").
Voici ce que j’ai essayé jusqu’à présent: - Faites un clic droit sur la base de données de Management Studio et exportez-le vers Excel: échec en raison de la longueur trop longue du champ .- Exportation de données de Management Studio vers un fichier plat avec " séparateur de texte et séparation par des virgules - complètement inutile, n'échappe pas aux guillemets dans un champ, ce qui rend le fichier complètement ambigu .....- BCP en ligne de commande - ne prend pas non plus en charge les champs entre guillemets.
J'ai besoin d'importer avec la bibliothèque FasterCSV Ruby. Cela ne permet pas au délimiteur de guillemets d'être un caractère ascii non standard ou plus d'un caractère. Il n'autorise pas non plus\n ou\r dans les colonnes sans guillemets.
Toute aide est grandement appréciée.
Ça peut être fait! Cependant, vous devez configurer spécifiquement SSMS pour utiliser la sortie entre guillemets, car, pour une raison quelconque, ce n'est pas la valeur par défaut.
Dans la fenêtre de requête que vous souhaitez enregistrer allez dans Requête -> Options de requête ...
Cochez la case "chaînes de devis contenant des séparateurs de liste lors de l'enregistrement des résultats .csv".
puis
select 'Apple,banana,cookie' as col1,1324 as col2,'one two three' as col3,'a,b,"c",d' as col4
va sortir
col1,col2,col3,col4
"Apple,banana,cookie",1324,one two three,"a,b,""c"",d"
c'est ce que nous voulons tous.
Ho cercato di capire anche questo. Si vous ne savez pas ce qu'il vous reste, dites-le maintenant, et s'il vous plaît, choisissez le meilleur disque, choisissez le meilleur de vous-même:
SELECT *
Alors, probablement, sembra stupido, ma dans realtà ha funzionato par moi.
Le moyen le plus simple de le faire:
Utiliser les outils d'importation de données Excel
Enregistrez ensuite les données importées dans un fichier CSV . Si vous souhaitez exporter une requête, enregistrez-la en tant que vue.
Voici l'essence d'un script que j'utilise pour faire ceci:
require 'rubygems'
require 'active_record'
require 'tiny_tds'
require 'activerecord-sqlserver-adapter'
require 'acts_as_reportable'
require 'ruport'
ActiveRecord::Base.logger = Logger.new("log/debug.log")
ActiveRecord::Base.establish_connection(
:adapter => 'sqlserver',
:mode => 'dblib',
:dataserver => 'servername',
:username => 'username',
:password => 'password',
:timeout => '60000'
)
class Table1 < ActiveRecord::Base
set_table_name 'table_name'
set_primary_key 'table_id'
acts_as_reportable
end
Table1.report_table(:all).save_as("finished/table1.csv")
J'espère que ça aide!
Je suis curieux de savoir pourquoi personne n'a suggéré d'utiliser SSIS (SQL Server Integration Services) pour ce processus? Tous les assistants et outils d'importation/exportation à partir de SSMS (SQL Server Management Studio) ne sont absolument pas destinés à être exhaustifs (et ils ne le sont certainement pas, et oui, il y a beaucoup de problèmes auxquels Microsoft devrait faire face avec les limitations ). Mais SSIS est un outil ETL très complet conçu pour résoudre les problèmes exactement comme celui-ci. La courbe d'apprentissage peut être un peu raide, mais l'exportation d'une table dans un fichier CSV délimité par des virgules/guillemets n'est pas particulièrement difficile.
Il faudra peut-être cet ajout pour Visual Studio afin de disposer d’un environnement de développement pour créer un package: http://www.Microsoft.com/en-us/download/details.aspx?id=42313 (link is for VS 2013, d'autres liens sont disponibles pour d'autres versions de VS).
La solution la plus simple que j'ai trouvée consiste à ajouter des guillemets dans votre requête.
SELECT '"'+MYCHARACTERDATA+'"' FROM MYTABLE
Si votre feuille de calcul vous permet d'utiliser un qualificateur de texte personnalisé, vous pouvez utiliser un caractère plus exotique, tel que | pour éviter les guillemets doubles dans le texte.
Daft..SSMS doit exporter en tant que fichier CSV approprié avec des champs de texte cités et des citations correctement échappées dans ces champs.
La meilleure solution que je puisse trouver est de sélectionner toutes les lignes et de faire une copie au format XML.
Le coller dans un fichier bloc-notes et l'enregistrer en tant que fichier XML . Ouvrez ensuite ce fichier XML à partir d'Excel et le tour est joué! Au moins c'est comme ça que j'ai eu mon dossier.
Peut-être que le lien ci-dessous peut vous aider:
Nous avons créé un petit script pour convertir le fichier CSV "brisé" de SSMS en un fichier CSV approprié. Trouvez-le dans cette réponse:
La solution de Robert Calhoun n'a pas fonctionné pour moi. Nous avions beaucoup de texte avec des virgules et des retours à la ligne/nouvelles lignes, etc. Nous avons utilisé la fonctionnalité d'exportation avec quelques modifications apportées à la solution de Chris Christodoulou ci-dessus.
Dans SQL Management Studio, cliquez avec le bouton droit de la souris sur la base de données et sélectionnez Tâches -> Exporter des données.
Choisissez ensuite SQL Server comme source et Fichier plat comme destination. Nommez le fichier MyFile.csv.
Définissez le qualificateur de texte comme "
Sélectionnez "Ecrire une requête pour spécifier le transfert de données" et collez-le dans votre requête . Vous pouvez laisser les paramètres suivants comme valeurs par défaut.
Avec les données exportées, ouvrez avec Excel et enregistrez au format Excel.