sql - SQL Server / PowerShell:批量插入问题
问题描述
我在 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”报告了错误。提供商没有提供有关该错误的任何信息。
无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”中获取行。”
在 C:\Users\xxxxx\Documents\AutoUpload.ps1:29 char:9
+ $insertData.ExecuteNonQuery()
+ ~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SqlException
我尝试更改分隔符设置,尝试更改列数据类型设置,尝试从 ID 列中删除信息,尝试使用 NULL 填充空格,但没有成功。
有任何想法吗?
解决方案
推荐阅读
- mysql - 如何使用邻接列表模型从 MySQL 分层类别树中获取数据?
- c# - C# Monogame,试图创建一个 2D 赛车 AI
- java - Quarkus下配合Lombok使用MapStruct
- python - 连接两个相同的数据帧并只保留新条目
- html - 背景图片不显示 vue.js
- python - 无法在没有不可迭代错误的情况下一步扩展列表并执行 set()
- spring-boot - 有没有办法在zookeeper的两个进程中观察一个ZNode?
- python - 如何简化这个 Python for 循环?
- mysql - 如何从重复的结果集中选择一行?
- javascript - 嵌套弹性容器的问题。内部容器的项目不尊重其父项的宽度