【问题标题】:sqlbulkcopycolumnmapping import csv to table issuesqlbulkcopycolumnmapping 导入 csv 到表问题
【发布时间】:2014-12-24 06:53:03
【问题描述】:

我很茫然。我正在尝试将 csv 中的列导入现有数据表。我相信最好的方法是通过使用 sqlbulkcopy 进行列映射,但我无法解决这个问题。我使用下面的脚本和 out-datatable 函数进行列映射,即使它似乎插入数据,当我运行查询时我也找不到它。我做错了什么?

 import-module .\functions.psm1

# Database variables 
$sqlserver = "Db-test-dev\sql2008" 
$database = "Employees" 
#$table = "dbo.tblPersonal" 
$csvfile = "C:\temp\cidb_test.csv" 

 $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.connectionstring = "Data Source=$sqlserver;Integrated Security=true;Initial Catalog=$database;" 

$CSVDataTable = Import-Csv ‘$csvfile’ | Out-DataTable

$sqlBulkCopy = New-Object (“Data.SqlClient.SqlBulkCopy”) -ArgumentList $SqlConnection
$sqlBulkCopy.DestinationTableName = “dbo.tblpersonal”

$ColumnMap1 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping(1, 1)
$ColumnMap2 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping(2, 2)
#$ColumnMap3 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping(2, 3)
$sqlBulkCopy.ColumnMappings.Add($ColumnMap1)
$sqlBulkCopy.ColumnMappings.Add($ColumnMap2)
#$sqlBulkCopy.ColumnMappings.Add($ColumnMap3)

$SqlConnection.Open()
$sqlBulkCopy.WriteToServer($CSVDataTable)
$SqlConnection.Close() 

【问题讨论】:

  • 我修改了整个脚本并能够添加列映射。数据表建在内存中,然后映射到sql表中的列。一切都很完美。

标签: sql sql-server mapping sqlbulkcopy


【解决方案1】:

使用批量复制添加列映射

$ColumnMap1 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('SSN','SSN')
$ColumnMap2 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('LastName', 'LastName')
$ColumnMap3 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('MiddleName','MiddleName')
$ColumnMap4 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('FirstName','FirstName')
$ColumnMap5 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('PreferredName','PreferredName')
$ColumnMap6 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('WorkPhone','WorkPhone')
$ColumnMap7 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('Email','Email')
$ColumnMap8 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('EmpType','EmpType')
$ColumnMap9 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('HireDate', 'HireDate')
$ColumnMap10 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('ACID','ACID')
$ColumnMap11 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('OPID','OPID')
$ColumnMap12 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('Floor','Floor')
$ColumnMap13 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('Department','Department')
$ColumnMap14 = New-Object System.Data.SqlClient.SqlBulkCopyColumnMapping('Division','Division')
$BulkCopy.ColumnMappings.Add($ColumnMap1)
$BulkCopy.ColumnMappings.Add($ColumnMap2)
$BulkCopy.ColumnMappings.Add($ColumnMap3)
$BulkCopy.ColumnMappings.Add($ColumnMap4)
$BulkCopy.ColumnMappings.Add($ColumnMap5)
$BulkCopy.ColumnMappings.Add($ColumnMap6)
$BulkCopy.ColumnMappings.Add($ColumnMap7)
$BulkCopy.ColumnMappings.Add($ColumnMap8)
$BulkCopy.ColumnMappings.Add($ColumnMap9)
$BulkCopy.ColumnMappings.Add($ColumnMap10)
$BulkCopy.ColumnMappings.Add($ColumnMap11)
$BulkCopy.ColumnMappings.Add($ColumnMap12)
$BulkCopy.ColumnMappings.Add($ColumnMap13)
$BulkCopy.ColumnMappings.Add($ColumnMap14)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 2014-10-17
    • 2011-09-08
    • 2014-03-22
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多