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.

## 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.

Comments (1) -

Bécsy Márk 8/24/2013 11:33:28 AM

Wow Smile

Add comment