CSV
したがって、複数のファイルから複数の にデータを挿入する必要があるこの特定のシナリオがありますSQL tables
。行ごとにデータを挿入するこのSOリンクに出くわしました。以下はリンクからのコードスニペットです -
Import-CSV .\yourcsv.csv | ForEach-Object {Invoke-Sqlcmd `
-Database $database -ServerInstance $server `
-Query "insert into $table VALUES ('$($_.Column1)','$($_.Column2)')"
}
私が直面している問題は、CSVs
列の数が異なる複数の列があることです。そのため、コード スニペットをハードコーディングするオプションはVALUES('$($_.Column1)','$($_.Column2)')
存在しません。
さらに、100 を超える列を含むテーブルがあります。したがって、書き込みVALUES('$($_.Column1)','$($_.Column2)')... so on upto '$($_.Column100)'
も実行できません。
同じために私が行ったことは、列名を次のCSVs
ようにPowerShell配列に保存することです-
$File = "C:\Users\vivek.singh\Desktop\ALL_EMAILS.csv"
$csvColumnNames = (Get-Content $File | Select-Object -First 1).Split(",")
現在$csvColumnNames
、テーブルのすべての列名がありALL_EMAILS
ます。私はそれを解決策に合わせようとしています -
Import-CSV .\yourcsv.csv | ForEach-Object {Invoke-Sqlcmd `
-Database $database -ServerInstance $server `
-Query "insert into $table VALUES ('$($csvColumnNames[0])','$($csvColumnNames[1])',..'$($csvColumnNames[$csvColumnNames.Length])')"
}
しかし、うまくいかないようです。私はかなり長い間これに苦労しており、アイデアが不足しています。新鮮な目は大歓迎です。