use*_*806 2 powershell json powershell-4.0
如果您想了解如何将 SQL Server 数据转换为 JSON 并将其放入文本 .json 文件中,则应该阅读此内容:
问题:
有人能告诉我这段代码有什么问题吗?我的目标是从 SQL Server 表中读取数据,将其转换为 JSON,然后将结果保存为 JSON 文本文件。代码运行但生成的.json文件只有:
{
"FieldCount": 11
},
{
Run Code Online (Sandbox Code Playgroud)
一遍又一遍地重复,仅此而已。
我的代码:
$instance = "localhost\SQLEXPRESS"
$connectionString = "Server=$Instance; Database=myDB;Integrated Security=True;"
$query = "Select * from myTable"
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $query
$result = $command.ExecuteReader()
$result | ConvertTo-Json | Out-File "file.json"
$connection.Close()
Run Code Online (Sandbox Code Playgroud)
更新:
将奖励 postanote 的答案,因为从技术上讲,他/她回答了我原来的问题(尽管我会警告并说我还没有尝试过)。
不过,我会推荐 Mike 的答案或我最终使用 BCP 的答案:
bcp "select * from myTable FOR JSON AUTO" queryout "C:\filepath\testsml.json" -c -S ".\SQLEXPRESS" -d myDBName -T
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 sql server express 2016 或更高版本,您应该能够使用 FOR JSON 子句在数据库端执行此操作。尝试类似的东西
$instance = "localhost\SQLEXPRESS"
$connectionString = "Server=$Instance; Database=myDB;Integrated Security=True;"
$query = "Select * from myTable FOR JSON AUTO"
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $query
$command.ExecuteScalar() | Out-File "file.json"
Run Code Online (Sandbox Code Playgroud)
尝试像这样的 \xe2\x80\xa6
\n\n### Exporting SQL Server table to JSON\n\nClear-Host\n\n#--Establishing connection to SQL Server --# \n\n$InstanceName = "."\n$connectionString = "Server=$InstanceName;Database=msdb;Integrated Security=True;"\n\n#--Main Query --# \n\n$query = "SELECT * FROM sysjobs"\n\n$connection = New-Object System.Data.SqlClient.SqlConnection\n$connection.ConnectionString = $connectionString\n\n$connection.Open()\n$command = $connection.CreateCommand()\n$command.CommandText = $query\n\n$result = $command.ExecuteReader()\n\n$table = new-object "System.Data.DataTable"\n\n$table.Load($result)\n\n#--Exporting data to the screen --# \n\n$table | select $table.Columns.ColumnName | ConvertTo-Json\n\n$connection.Close()\n\n# Results\n\n{\n "job_id": "5126aca3-1003-481c-ab36-60b45a7ee757",\n "originating_server_id": 0,\n "name": "syspolicy_purge_history",\n "enabled": 1,\n "description": "No description available.",\n "start_step_id": 1,\n "category_id": 0,\n "owner_sid": [\n 1\n ],\n "notify_level_eventlog": 0,\n "notify_level_email": 0,\n "notify_level_netsend": 0,\n "notify_level_page": 0,\n "notify_email_operator_id": 0,\n "notify_netsend_operator_id": 0,\n "notify_page_operator_id": 0,\n "delete_level": 0,\n "date_created": "\\/Date(1542859767703)\\/",\n "date_modified": "\\/Date(1542859767870)\\/",\n "version_number": 5\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
9043 次 |
| 最近记录: |