簡體   English   中英

腳本Powershell導入多個CSV

[英]Script powershell import multiple CSV

我正在執行一個腳本來導入CSV(命令),以更新SQL Server中的庫存。 但是運行以下腳本時遇到此錯誤:

Invoke-Sqlcmd:從valchar varchar轉換為'2200100001',這是一個重復的殖民地int。 指令aétéarrêtée。 AuCactèreC:\\ Users \\ admin \\ Desktop \\ updateDb.ps1:36:19 + ... $ impcsv =調用SQLcmd-數據庫$ db_name-查詢$ query -ServerIns ... + ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [Invoke-Sqlcmd],SqlPowerShellSqlExecutionException + FullyQualifiedErrorId:SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

這是我的powershell腳本:

$sql_instance_name = 'SERVER\SAGE100'
$db_name = 'SERVER_DB'
$table = "dbo.F_ARTSTOCK"

$csv_folder = 'F:\EUR'
$csv_completed_folder = 'F:\EUR\done'
$batchsize = 50000 

$csv_files = Get-Childitem -Path $csv_folder -Filter '*.csv'

$connectionstring = "Data Source=$sql_instance_name;Integrated Security=true;Initial Catalog=$db_name;" 
$bulkcopy = New-Object Data.SqlClient.SqlBulkCopy($connectionstring, [System.Data.SqlClient.SqlBulkCopyOptions]::TableLock) 
$bulkcopy.DestinationTableName = $table 
$bulkcopy.bulkcopyTimeout = 0 
$bulkcopy.batchsize = $batchsize 

foreach($file in $csv_files) {
    $impcsv = $file.FullName

    write-host "Processing file ..........$impcsv" -foregroundcolor green
    $data = import-csv -Delimiter ";" $impcsv

    $count = 1

    foreach($i in $data) {

        Write-Host $i.Reference

        $reference = $i.Reference
        $quantity = $i.Quantity

        $query = "UPDATE dbo.F_ARTSTOCK (AR_Ref,AS_QteSto)
                SET dbo.F_ARTSTOCK.AS_QteSto = dbo.F_ARTSTOCK.AS_QteSto - $quantity
                WHERE dbo.F_ARTSTOCK.AR_Ref = $reference"
Write-Host $query
        $impcsv = invoke-sqlcmd -Database $db_name -Query $query -ServerInstance $sql_instance_name 

        write-host "Processing row ..........$count" -foregroundcolor green

        $count  = $count + 1

    }
}

您是否知道問題的根源?

謝謝您的幫助。

錯誤消息是法語。 翻譯為:'2200100001'varchar值的轉換已超過int列。 該指令已停止。

基本上,這意味着您在該表上具有32位int列,並且該列必須為bigint類型才能處理更大的值...或遍歷您嘗試提交的數據並驗證其是否正確(又名:從csv中刪除該行。具體取決於您對數據的敏感程度)。

暫無
暫無

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

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