【问题标题】:PowerShell DB2 DataTable Row to JSON File for jQuery DataTables用于 jQuery 数据表的 PowerShell DB2 数据表行到 JSON 文件
【发布时间】:2021-07-09 17:01:06
【问题描述】:

我正在对DB2 Database 运行多个查询,并将信息存储在ArrayList 中。但是,返回的信息是DataTable,由于我是从哪里获得了查询DB2 Database的代码。

我正在做的是按计划查询结果,将信息推送到JSON 文件,jQuery DataTables 将读取该文件以填充结果。转换为JSON Object 有效,但是它缺少“数据”的父节点,因此jQuery 可以看到结果。

这是生成的数据,至少是一个样本:

[ {
    "A":  "1",
    "B":  "2",
    "C":  "3",
    "D":  "4"
} ]

但是,jQuery DataTables 期望 data 作为父节点来加载数据。 所以,我想做的是让 json 看起来像这样:

{
    "data": [
        {
            "A":  "1",
            "B":  "2",
            "C":  "3",
            "D":  "4"
        }
        ]
}

这是我用来从DB2获取结果的函数:

Function Get-DB2Results { 
param (
    $db2
)
$script:dbcmd.CommandText = $db2
$rdr = $script:dbcmd.ExecuteReader()
$dt = [System.Data.DataTable]::New()
$dt.Load($rdr)
Return $dt
}

我将此信息存储在 ArrayList 中。我相信由于对象的混合,当我导出到JSON 时,数据没有正确转换:

Connect-DB2
foreach ($query in $SQLArray) { 
    $jsonFileTotals.add(((Get-DB2Results -db2 $query) | Select-Object * -ExcludeProperty ItemArray, Table, RowError, RowState, HasErrors))
    $jsonFileTotals.add($blankLine)
}
Disconnect-DB2
@{ data = @( $jsonFileTotals.toArray() ) } | ConvertTo-Json | out-file \\SRV01\Data\totalsArray.txt -force

我相信因为有一个 ArrayListDataTable 对象混合在一起,一个不正确的 JSON 文件:

             "@{A=1; B=8; C=10; D=9}"
         ],
         {
             "A":  "1",
             "B":  "2",
             "C":  "3",
             "D":  "4",

我是不是把问题复杂化了?感谢您的帮助。

【问题讨论】:

  • 嗨,你能解释一下你是如何在 powershell 中连接到 db2 的吗?你用的是 powershell 7 还是 5?
  • @user3898488 至于'explain me how you connected to db2 in powershell ? Do you use powershell 7 or 5?' PS版无所谓。连接到任何数据库都有特定的连接字符串标准。网上有很多例子/文章。 'PowerShell connect to db2',与SO post as well.,以及本文样本PS connect to DB2
  • 对我来说不是那么容易;特别是如果您使用 V7 作为(至少在一段时间前)不太好的 db2 驱动程序,请参见此处:community.ibm.com/community/user/hybriddatamanagement/…

标签: arrays json powershell datatables db2


【解决方案1】:

这应该可以正常工作。能否请您查看我的评论并提示我如何在 powershell 中连接到 db2?

$MyArrayList = New-Object -TypeName "System.Collections.ArrayList"

$MyArrayList.Add(5)
$MyArrayList.Add(5)
$MyArrayList.Add(5)
$MyArrayList.Add(5)
$MyArrayList.Add(4)

$MyArrayList | ConvertTo-Json

$myObject = [PSCustomObject]@{
    data = $MyArrayList
}

$myObject | ConvertTo-Json

#or even lighter
$myHashTable= @{}
$myHashTable.data = $MyArrayList
$myHashTable | ConvertTo-Json

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-09-02
  • 2011-04-12
  • 2016-01-26
  • 2015-11-11
  • 1970-01-01
  • 2022-12-11
  • 2015-01-04
  • 1970-01-01
相关资源
最近更新 更多