将表从数据库导出到csv文件

Abd*_*eet 67 database sql-server csv

我想:将表从sql server数据库导出到逗号分隔csv文件,而不使用sql Server导出导出向导

我想使用查询来完成它,因为我想在自动化中使用查询

可能吗?我搜索了那个并没有找到一个好的答案

pri*_*oyd 127

一些想法:

从SQL Server Management Studio

 1. Run a SELECT statement to filter your data
 2. Click on the top-left corner to select all rows
 3. Right-click to copy all the selected
 4. Paste the copied content on Microsoft Excel
 5. Save as CSV
Run Code Online (Sandbox Code Playgroud)

使用SQLCMD(命令提示符)

例:

在命令提示符下,您可以运行查询并将其导出到文件:

sqlcmd -S . -d DatabaseName -E -s',' -W -Q "SELECT * FROM TableName" > C:\Test.csv
Run Code Online (Sandbox Code Playgroud)

更多信息:ExcelSQLServer

笔记:

  • 此方法将在文件底部显示"受影响的行"信息,但您可以通过在查询本身中使用"SET NOCOUNT ON"来消除此问题.

  • 您可以运行存储过程而不是实际查询(例如"EXEC Database.dbo.StoredProcedure")

  • 您可以使用任何编程语言甚至批处理文件来自动执行此操作

使用BCP(命令提示符)

例:

bcp "SELECT * FROM Database.dbo.Table" queryout C:\Test.csv -c -t',' -T -S .\SQLEXPRESS
Run Code Online (Sandbox Code Playgroud)

引用逗号分隔符为-t','vs just -t非常重要,

更多信息:bcp Utility

笔记:

  • 按照使用SQLCMD时,您可以运行存储过程而不是实际查询
  • 您可以使用任何编程语言或批处理文件来自动执行此操作

希望这可以帮助.

  • 第一个建议是非常直接的.:-)其他人将根据数据中的逗号和换行符进行不同的工作(两者都在正确的CSV文件中有效,正确引用). (2认同)

Fai*_*aiz 7

这是我发现导出到Excel 的选项(可以修改为CSV我相信)

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=D:\testing.xls;', 
'SELECT * FROM [SheetName$]') select * from SQLServerTable
Run Code Online (Sandbox Code Playgroud)

  • 答案如下:http://stackoverflow.com/a/14544245/82961但请先付出一些努力才能让别人为你做这件事.当你无法弄清楚如何去做而不是你不想知道如何去做时,请使用SO.这只会让你成为一个懒惰的程序员而不是一个好的程序员.没有冒犯意味着..也请养成完全阅读错误信息的习惯,大多数时候你需要的所有线索都在那里. (5认同)
  • 您拥有修复邮件本身错误所需的所有信息.只需启用"Ad Hoc Distributed Queries"即可. (2认同)
  • <sigh>,当我提供答案时,我会给出一个完整的答案,而且stackexchange中超过99%的人也这样做.stackexchange的目的是避免人们搜索来自整个网络的答案.显然,不是每个人都看到了这一点的重要性. (2认同)

adn*_*ili 7

您还可以使用以下Node.js模块轻松完成:

https://www.npmjs.com/package/mssql-to-csv

var mssqlExport = require('mssql-to-csv')

    // All config options supported by https://www.npmjs.com/package/mssql 
    var dbconfig = {
        user: 'username',
        password: 'pass',
        server: 'servername',
        database: 'dbname',
        requestTimeout: 320000,
        pool: {
            max: 20,
            min: 12,
            idleTimeoutMillis: 30000
        }
    };

    var options = {
        ignoreList: ["sysdiagrams"], // tables to ignore 
        tables: [],                  // empty to export all the tables 
        outputDirectory: 'somedir',
        log: true
    };

    mssqlExport(dbconfig, options).then(function(){
        console.log("All done successfully!");
        process.exit(0);
    }).catch(function(err){
        console.log(err.toString());
        process.exit(-1);
   });
Run Code Online (Sandbox Code Playgroud)


Ala*_*n B 6

您无需费力使用 SSMS 或编程语言。

以管理员身份运行 PowerShell 提示符,然后:

Install-Module -Name SqlServer
Run Code Online (Sandbox Code Playgroud)

安装后,您可以将任何表导出为 CSV,如下所示:

Invoke-Sqlcmd -Query "SELECT * FROM [mydatabase].[dbo].[mytable]" -ServerInstance "MYSQLSERVER" | Export-Csv -Path "c:\temp\output.csv" -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

您可以将其放入 .PS1 脚本中并按照您喜欢的方式执行它。


Gio*_*i S 5

从SQL Server Management Studio

右键单击要导出的表,然后选择"选择所有行"

右键单击结果窗口,然后选择"将结果另存为..."