2

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])')"
  }

しかし、うまくいかないようです。私はかなり長い間これに苦労しており、アイデアが不足しています。新鮮な目は大歓迎です。

4

1 に答える 1