[英]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.