How to get export output in “real” CSV format in SQL Server Management Studio?

前端 未结 12 968
梦谈多话
梦谈多话 2020-12-04 07:57

I have a query that I am running in SQL Server Management Studio (connecting to a SQL Server 2005 database). I want to export the data in CSV format. Not wannabe CSV format,

相关标签:
12条回答
  • 2020-12-04 08:45

    My normal work-around is to build it into the query:

    SELECT '"' + REPLACE(CAST(column AS NVARCHAR(4000)), '"', '""') + '"' AS Header, ... FROM ...
    

    You can build that into a user-defined function, to make it a little easier, but you have to build a separate function for each data type.

    0 讨论(0)
  • 2020-12-04 08:46

    Different combinations of these settings can bring results in the output that are incorrect or partial data. This is because Microsoft didn't think it was important enough to fix these issues. I'm only explaining what happens with CSV files when sending the results to a file.

    To get good results, do the following:

    Open new query window (new tab/session) ... if you do not, configuration below is lost and set back to the defaults

    Write the query to handle the quote inside the quote, and also wrap all string data types in quotes. Also be aware that different DBMS and programming language grammars accept a different syntax for an escaped double quote (if using this output as input to another system). Some use \". Some use "". XML uses ". Probably a reason Microsoft chose to ignore this functionality, so they didn't have to deal with the arguments.

    .. If Escape Sequence of new system is "".

    SELECT '"' + REPLACE(CAST(column1 AS VARCHAR(MAX)), '"', '""') + '"' FROM table1
    

    .. If Escape Sequence of new system is \".

    SELECT '"' + REPLACE(CAST(column1 AS VARCHAR(MAX)), '"', '\"') + '"' FROM table1
    

    Configuration:

    Query Options > Results > "Include column headers when copying or saving the results" checked

    Query Options > Results > "Quote strings containing list separators when saving .csv results" - BROKEN; DO NOT USE!

    Query Options > Results > others unchecked

    Query Options > Results > Text > comma delimited (setting on top right corner)

    Query Options > Results > Text > "Include column headers in the result set" checked

    Query Options > Results > Text > others unchecked

    Query Options > Results > Text > "Maximum number of characters displayed in each column" - set to max length so strings don't get truncated.

    Query > Results To File (this is a toggle between all 3 options)

    Execute query (F5)

    Prompt for file name of report

    Open file to look at results

    NOTE: If you need to do this on a regular basis, you're better off just developing a program that will do this for you in .NET or Java, or whatever language you are comfortable with. Otherwise you have a high probability of making a mistake. Then be extremely aware of the syntax of the system you're importing into, before you define your export out of SQL Server.

    0 讨论(0)
  • 2020-12-04 08:47

    I would like to suggest an alternative approach. I have this question bookmarked in SO. Voted in a lot of the answers and comments. But it is always a mess when I need to do the banal task of exporting a CSV file from a query in SQL Management Studio.

    The easiest solution is to just to use another tool, the free Dbeaver.

    1. Download the Dbeaver multiplatform database tool (there is a portable version, you can use if without admin rights in your machine).
    2. Run it and create a new SQL Server connection.
    3. Open a new "Sql editor" tab
    4. Click the arrow to execute your query
    5. Right click the result grid and select "export data" and select CSV
    6. Voilá! Now you have a decently formated CSV file.

    No mystery. No need to restart. It just works.

    0 讨论(0)
  • 2020-12-04 08:48

    Maybe this won't work for your application, but I usually get around this problem by exporting to a tab-delimited format. Don't overlook this simple solution if it applies for you.

    0 讨论(0)
  • 2020-12-04 08:49

    How do you feel about Export to CSV from SSMS via PowerShell? This post describes how to define an external tool in SSMS that sends the currently selected query to a PowerShell script which exports to a CSV.

    0 讨论(0)
  • 2020-12-04 08:56

    As of 2016, this is the default behaviour when the following option is selected in Query Options:

    Columns are delimited by commas, and fields containing commas are double-quote encapsulated.

    0 讨论(0)
提交回复
热议问题