尝试使用PowerShell将XML文件导入MS SQL表

时间:2019-02-17 18:58:23

标签: sql-server xml powershell

我正在尝试使用PowerShell将XML文件导入到MS SQL表中,我已经修改了已经可以正常运行的PowerShell脚本,但是可以提供一些帮助,因为新的XML文件为某些元素包含多个条目。(我已经包含了XML文件的示例)

下面是表格布局,这是我尝试导入的文件示例,也是我尝试修改的脚本才能开始工作。

表布局为:

------------------------------
:supplier_id : name : Symbol :

这是XML文件本身的一部分

<SupplierMapping supplier_id="4536" name="Joby">
    <Symbol>Joby</Symbol>
</SupplierMapping>
<SupplierMapping supplier_id="4537" name="ACT">
    <Symbol>ACT</Symbol>
    <Symbol>ADVANCED CABLE TECH</Symbol>
    <Symbol>ADVANCED CABLE TECHNOLOGY</Symbol>
    <Symbol>IEC LOCK</Symbol>
</SupplierMapping>

如您所见,一些供应商ID和名称将具有多个<Symbol>名称,因此我希望在这些表中具有多个<Symbol>名称,但是我修改过的脚本似乎只提取了vendor_id和名称元素,并且完全错过了Set-ExecutionPolicy Unrestricted -Scope LocalMachine [String]$global:connectionString = "Data Source=Apps2\Apps2;Initial Catalog=DTEDATA;Integrated Security=SSPI"; [System.Data.DataTable]$global:dt = New-Object System.Data.DataTable; [System.Xml.XmlTextReader]$global:xmlReader = New-Object System.Xml.XmlTextReader("C:\Scripts\icecat\supplier_mapping.xml"); [Int32]$global:batchSize = 100; function Add-FileRow() { $newRow = $dt.NewRow(); $null = $dt.Rows.Add($newRow); $newRow["supplier_id"] = $global:xmlReader.GetAttribute("supplier_id"); $newRow["name"] = $global:xmlReader.GetAttribute("name"); $newRow["Symbol"] = $global:xmlReader.GetAttribute("Symbol"); } # init data table schema $da = New-Object System.Data.SqlClient.SqlDataAdapter("SELECT * FROM Supplier_Mapping_Test WHERE 0 = 1", $global:connectionString); $null = $da.Fill($global:dt); $bcp = New-Object System.Data.SqlClient.SqlBulkCopy($global:connectionString); $bcp.DestinationTableName = "dbo.Supplier_Mapping_Test"; $recordCount = 0; while ($xmlReader.Read() -eq $true) { if (($xmlReader.NodeType -eq [System.Xml.XmlNodeType]::Element) -and ($xmlReader.Name -eq "SupplierMapping")) Add-FileRow -xmlReader $xmlReader; $recordCount += 1; if (($recordCount % $global:batchSize) -eq 0) { $bcp.WriteToServer($dt); $dt.Rows.Clear(); Write-Host "$recordCount file elements processed so far"; } } } if ($dt.Rows.Count -gt 0) { $bcp.WriteToServer($dt); } $bcp.Close(); $xmlReader.Close(); Write-Host "$recordCount file elements imported "; catch { throw; } 部分。任何帮助或指导将不胜感激。

add_filter( 'woocommerce_new_order_note_data', 'filter_woocommerce_new_order_note_data', 10, 2 );
function filter_woocommerce_new_order_note_data( $args, $args2 ) {
    if( ! $args2['is_customer_note'] && is_user_logged_in() && current_user_can( 'edit_shop_order', $args2['order_id'] ) ){
        $user = get_user_by( 'id', get_current_user_id() );
        $args['comment_author'] = $user->display_name;
        $args['comment_author_email'] = $user->user_email;
    }

    return $args;
}

0 个答案:

没有答案