簡體   English   中英

csv 導入 null 值 powershell 腳本

[英]csv import null value powershell script

我創建了一個名為 KS_Invoicing 的表,但是以下 powershell 腳本不允許我導入 NULL 值。 任何想法為什么?

$database = 'Database'
$server = '192.168.1.1'
$table = 'KS_Invoicing'
$path = '\\hmks01\c$\temp\'

$CSVs = get-childitem $path -Filter *.csv
foreach ($c in $CSVs){

Import-CSV $path$c | ForEach-Object { 
$_.PSObject.Properties | Foreach-Object {$_.Value = $_.Value.Trim()} 

$column1= $_."Column One" 

if ($column1) {

$query= "insert into "+$table+" VALUES ('"+$column1+"')"  

Invoke-Sqlcmd -Database $database -ServerInstance $server -Query $query -U ks  -Password ks2020
}

}
Move-Item $path$c "\\hmks01\c$\temp\Archive"
}

根據我的第一條評論。 導入空值按預期工作。

'Field1,Field2,Field3
Row1Field1Data,,Row1Field3Data
Row2Field1Data,,Row2Field3Data
Row3Field1Data,,Row3Field3Data' | 
Out-FIle -FilePath 'D:\Temp\EmptyFields.csv'

psEdit 'D:\Temp\EmptyFields.csv'
# Results
<#
Field1,Field2,Field3
Row1Field1Data,,Row1Field3Data
Row2Field1Data,,Row2Field3Data
Row3Field1Data,,Row3Field3Data
#>

Import-Csv -Path 'D:\Temp\EmptyFields.csv'
# Results
<#
Field1         Field2 Field3        
------         ------ ------        
Row1Field1Data        Row1Field3Data
Row2Field1Data        Row2Field3Data
Row3Field1Data        Row3Field3Data
#>

除了之前的回復。 如果要導入 NULL 值,則必須遵循以下語法:https://www.w3resource.com/sql/insert-statement/insert-null.ZE1BFD762321E409639CEE4AC0B6E841CZ

因此,您必須檢測 csv 中的空值並替換為“NULL”。

$csv = 'Column One,Column Two,Column Three
Row1Field1Data,,Row1Field3Data
,Row1Field2Data,Row2Field3Data
Row3Field1Data,,Row3Field3Data'  | ConvertFrom-Csv
$table = 'KS_Invoicing'
foreach($line in $csv){
    $values = $line.PSObject.Properties.Value 
    $values | Foreach-Object {$_ = $_.Trim()} 

    $tab = foreach($v in $values)
    {
        if($v -eq ""){'NULL'}
        else{"`"$v`""}
    }
    "insert into $table VALUES ($($tab -join ','))"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM