我在Powershell中的代码:
Function AutoImportCommaFlatFiles($location, $file, $extension, $server, $database)
{
$full = $location + $file + $extension
$all = Get-Content $full
$columns = $all[0]
$columns = $columns.Replace(" ","")
$columns = $columns.Replace("|"," ] VARCHAR(100), [")
$table = "CREATE TABLE " + $file + " ([" + $columns + "] VARCHAR(100))"
$connection = New-Object System.Data.SqlClient.SqlConnection
$buildTable = New-Object System.Data.SqlClient.SqlCommand
$insertData = New-Object System.Data.SqlClient.SqlCommand
$connection.ConnectionString = "Data Source=" + $server + ";Database=" + $database + ";integrated security=true"
$buildTable.CommandText = $table
$buildTable.Connection = $connection
## Added to function
$x = 0
$insertData.CommandText = "EXECUTE stp_CommaBulkInsert @1,@2"
$insertData.Parameters.Add("@1", $full)
$insertData.Parameters.Add("@2", $file)
$insertData.Connection = $connection
$connection.Open()
$buildTable.ExecuteNonQuery()
$connection.Close()
## Added to function
$x = 1
if ($x = 1)
{
$connection.Open()
$insertData.ExecuteNonQuery()
$connection.Close()
}
}
AutoImportCommaFlatFiles -location "C:\Users\XXXX\Test3\"
-file "Illinois" -extension ".csv" -server "XXXXX" -database "TEST"
我的SQL代码
ALTER PROCEDURE stp_CommaBulkInsert
@file VARCHAR(MAX),
@table VARCHAR(MAX)
AS
BEGIN
DECLARE @f VARCHAR(MAX), @t VARCHAR(MAX), @s VARCHAR(MAX)
SET @f = @file
SET @t = @table
SET @s = 'BULK INSERT ' + @t + '
FROM ''' + @f + '''
WITH (
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''0x0A'',
FIRSTROW = 2
)'
EXEC sp_executesql @s
END
我的错误
使用“ 0”参数调用“ ExecuteNonQuery”的异常:“第2行,第1列的批量加载数据转换错误(截断) (ID)。
第3行第1列(ID)的批量加载数据转换错误(截断)。
第4行第2列(BusinessName)的批量加载数据转换错误(截断)。
第5列第1列(ID)的批量加载数据转换错误(截断)。
批量加载:在数据文件中遇到了意外的文件结尾。链接服务器“(null)”的OLE DB提供程序“ BULK”报告了一个错误。提供程序未提供有关该错误的任何信息。
无法从OLE DB提供程序“ BULK”获取链接服务器“(空)”的行。”
在C:\ Users \ xxxxx \ Documents \ AutoUpload.ps1:29 char:9
+ $ insertData.ExecuteNonQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo:未指定:(:) [],MethodInvocationException
+ FullyQualifiedErrorId:SqlException
我尝试更改定界符设置,尝试更改列数据类型设置,尝试从ID列中删除信息,尝试填充NULL并没有运气。
有什么想法吗?