我正在运行SQL Server Management Studio:版本15.0.18358.0
在stackoverflow社区的帮助下,我编写了下面的代码,我希望用它来自动化我的SQL服务器中的日常表。我不太确定我做错了什么,或者我需要寻找什么来纠正我的错误。我试图将txt文件"ED_TO_BED_DAILY"导入SQL。代码运行,但我得到一个错误如下:
使用"0"个参数调用"ExecuteNonQuery"时发生异常:"以"轨道组卸货位置PT名称PT MRN PT财务管理位置房间床位到达月"开头的标识符
"ADDIT_BED_ORDERED ADDIT_BED_ASSIGNED ADDIT_B"太长。最大长度为128。"
下面是我的代码:
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 "Q:\Data Requests\ED TO BED TEST\" -file "ED_TO_BED_DAILY" -extension ".txt" -server "ENTSQL01LSNR" -database "EMTCQIData"
以下是SQL表中变量的格式:
下面是平面文件的一个片段:
3条答案
按热度按时间rryofs0p1#
也许你错过了什么
$列= $列。替换(““,””)$列= $列。替换(“,"",] VARCHAR(100),[”)
或者在txt文件的标题格式中,您是否用逗号分隔每个列名?
是否使用ssms中的导入平面文件检查此导入?
brgchamk2#
我觉得如果你把
$columns = $columns。将(““,””)替换为$columns = $columns。替换(““,",”)......应该可以。
rjee0c153#
不如这样吧:
获取子项-路径“\unc\文件名. tab”|Import-DbaCsv -SqlInstance $SqlInstace -数据库数据库名-自动创建表-分隔符“'t”