CSV importálása egy másik nézőpontból

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.

 1## Import the SQL Server Module.
 2Write-Host "Importing SQL Server PowerShell modules"
 3Import-Module "sqlps" -DisableNameChecking
 4 
 5$datafolder = "C:\temp"
 6 
 7Write-Host "importing file"
 8$csv = "$datafolder\export.csv"
 9$data = Import-Csv $csv
10     
11ForEach ($row in $data)
12    {
13$sql = "INSERT INTO table1 VALUES ("
14$sql += "'" + $row.col1 + "',"
15$sql += "'" + $row.col2 + "',"
16$sql += "'" + $row.col3  + "')"
17 
18 
19Invoke-Sqlcmd -QueryTimeout 300 -ServerInstance ".\instance" -Database "tempdb" -Query $sql
20 
21}

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.