SQL Server 以开头的PowerShell伊势标识符太长

bpzcxfmw  于 2022-12-28  发布在  Shell
关注(0)|答案(3)|浏览(196)

我正在运行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表中变量的格式:

下面是平面文件的一个片段:

rryofs0p

rryofs0p1#

也许你错过了什么
$列= $列。替换(““,””)$列= $列。替换(“,"",] VARCHAR(100),[”)
或者在txt文件的标题格式中,您是否用逗号分隔每个列名?
是否使用ssms中的导入平面文件检查此导入?

brgchamk

brgchamk2#

我觉得如果你把
$columns = $columns。将(““,””)替换为$columns = $columns。替换(““,",”)......应该可以。

rjee0c15

rjee0c153#

不如这样吧:
获取子项-路径“\unc\文件名. tab”|Import-DbaCsv -SqlInstance $SqlInstace -数据库数据库名-自动创建表-分隔符“'t”

相关问题