【问题标题】:SQL SERVER Export Json to FileSQL SERVER 将 Json 导出到文件
【发布时间】:2019-02-14 22:05:21
【问题描述】:
我想从 sql server 结果 json 导出到 'json file'。
例子:
SELECT * FROM SYS.all_columns FOR JSON AUTO
我知道一种使用命令“BCP”的方法。
邀请您分享不同的方式来导出“从 Sql Server 导出 Json 文件”。
(您可以在此处观看转换示例:convert table to Json)
【问题讨论】:
标签:
json
sql-server
tsql
bcp
【解决方案1】:
太多的评论,但只有一半的答案......
你知道 BCP,所以这里没什么可告诉你的......
重要提示:SQL-Server 对文件系统的访问非常有限。它没有作为运行脚本的用户运行。它在运行 SQL Server 的机器的上下文中运行:因此,像 c:\temp\SomeFile.json 这样的文件目标可能不会进入您机器上所谓的目录中。共享驱动器上某处的目标可能会因访问冲突而失败。
使用外部工具(power shell 或您选择的任何编程语言)连接到数据库并调用结果以存储它可能会更灵活。
如果您需要在 SQL-Server 中触发此操作,您可以使用 xp_cmdshell 执行此类外部程序(就像使用 BCP 执行此操作一样。
我建议创建一个 VIEW、一个 UDF 或一个 SP,以便在一次调用中返回您需要的任何内容(带有一些参数)。这将允许您从 SQL-Server 内部控制内容,但可以在外部执行检索和存储。
希望这会有所帮助...
【解决方案2】:
- 使系统管理员能够控制是否使用 xp_cmdshell。
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'xp_cmdshell', 1;
GO
RECONFIGURE;
GO
- 使用 bcp 执行查询:
EXEC sys.XP_CMDSHELL 'bcp "SELECT * FROM SYS.all_columns FOR JSON AUTO;" queryout C:\Data\JsonTest.json -t, -c -S . -d master -T'