BCP-vel milyen egyszerű is ez kivéve, ha van text qualifier, azaz idézőjelek között van minden oszlopban az adat. Erre van egy MS cikk itt: http://support.microsoft.com/default.aspx?scid=kb;EN-US;73182
Persze, ez is megoldás, de azért a PowerShell is. Ismét egyszerűbb volt ezt bevetni, mint a bcp-t vagy az SQLCMD-t.
## Import the SQL Server Module.
Write-Host "Importing SQL Server PowerShell modules"
Import-Module "sqlps" -DisableNameChecking
$datafolder = "C:\temp"
Write-Host "importing file"
$csv = "$datafolder\export.csv"
$data = Import-Csv $csv
ForEach ($row in $data)
{
$sql = "INSERT INTO table1 VALUES ("
$sql += "'" + $row.col1 + "',"
$sql += "'" + $row.col2 + "',"
$sql += "'" + $row.col3 + "')"
Invoke-Sqlcmd -QueryTimeout 300 -ServerInstance ".\instance" -Database "tempdb" -Query $sql
}
Nem mondom, hogy ez egy hatékony megoldás, de nem kellett szenvedni a mindenféle encoding, lf, és rowterminator beállításokkal. Ráadásul egy kis módosítással 100+ csv-t importáltam be ezzel.