Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将值从CSV导入SQL Server_Sql Server_Powershell_Csv - Fatal编程技术网

Sql server 将值从CSV导入SQL Server

Sql server 将值从CSV导入SQL Server,sql-server,powershell,csv,Sql Server,Powershell,Csv,我需要将CSV数据从客户端计算机导入网络上其他位置的SQL Server。我想用PowerShell来实现这一点,因为我正试图更流利地使用它 然而,当我使用在互联网上找到的一个例子时,我遇到了一个我不理解的问题 作为参考,我使用的第三个示例来自: 我已经将信息导入到datatable中,但是,一旦系统尝试将数据插入数据库,就会出现以下错误,这显然是我的数据如何进入datatable的问题,因为at符号和括号似乎是导致该问题的原因 这就是错误: System.Management.Automat

我需要将CSV数据从客户端计算机导入网络上其他位置的SQL Server。我想用PowerShell来实现这一点,因为我正试图更流利地使用它

然而,当我使用在互联网上找到的一个例子时,我遇到了一个我不理解的问题

作为参考,我使用的第三个示例来自:

我已经将信息导入到datatable中,但是,一旦系统尝试将数据插入数据库,就会出现以下错误,这显然是我的数据如何进入datatable的问题,因为at符号和括号似乎是导致该问题的原因

这就是错误:

System.Management.Automation.MethodException:无法将“WriteToServer”的值为“System.Object[]”的参数“0”转换为 键入“System.Data.DataRow[]”:
无法转换“@{[Type]=1;[EID]=803;[FirstName]=Bob;[MiddleInit]=;[LastName]=Miller;[HireDate]=03031903;[Rule]=H; [Rate]=0100;[Status]=1;[Store]=8;[Dept]=04;[Class]=130; [Badge]=803;}”类型的值 “System.Management.Automation.PSCustomObject”输入“System.Data.DataRow”。
--->System.Management.Automation.PSInvalidCastException:无法转换 “@{[Type]=1;[EID]=803;[FirstName]=Bob;[MiddleInit]=; [LastName]=Miller;[HireDate]=03031903;[Rule]=H;[Rate]=0100; [Status]=1;[Store]=8;[Dept]=04;[Class]=130;[Badge]=803;}“的值” 键入“System.Management.Automation.PSCustomObject”以键入 “System.Data.DataRow”

在System.Management.Automation.LanguagePrimitives.ConvertTo(对象) valueToConvert,类型resultType,布尔递归,IFormatProvider formatProvider,TypeTable备份TypeTable)
在System.Management.Automation.LanguagePrimitives.ConvertUnrelatedArray(对象 valueToConvert,类型resultType,布尔递归,PSObject originalValueToConvert,IFormatProvider formatProvider,TypeTable backupTable)
在System.Management.Automation.LanguagePrimitives.ConvertTo(对象) valueToConvert,类型resultType,布尔递归,IFormatProvider formatProvider,TypeTable备份TypeTable)
在System.Management.Automation.Adapter.PropertySeandMethodArgumentConvertTo(对象 valueToConvert,类型resultType,IFormatProvider formatProvider)
在System.Management.Automation.Adapter.MethodArgumentConvertTo(对象 valueToConvert,布尔值isParameterByRef,Int32参数索引,类型 结果类型,IFormatProvider formatProvider)
在System.Management.Automation.Adapter.SetNewArguments(String methodName,Object[]arguments,Object[]newArguments, 参数信息参数,Int32索引)
---内部异常堆栈跟踪的结束--- 在System.Management.Automation.Adapter.SetNewArguments(String methodName,Object[]arguments,Object[]newArguments, 参数信息参数,Int32索引)
位于System.Management.Automation.Adapter.GetMethodArgumentsBase(字符串 methodName、ParameterInformation[]参数、Object[]参数、, 布尔扩展参数(最佳)
位于System.Management.Automation.DotNetAdapter.MethodInvokedeTNet(字符串 methodName、对象目标、MethodInformation[]MethodInformation、, 对象[]参数)
在System.Management.Automation.Adapter.BaseMethodInvoke(PSMethod, 对象[]参数)
位于System.Management.Automation.ParserOps.CallMethod(令牌、对象目标、字符串方法名、对象[]参数数组、布尔值 callStatic,对象值设置)
在System.Management.Automation.MethodCallNode.InvokeMethod(对象 目标,对象[]参数,对象值)
在System.Management.Automation.MethodCallNode.Execute(数组输入、管道输出、ExecutionContext上下文)
在System.Management.Automation.ParseTreeNode.Execute(数组输入、管道输出管道、ArrayList和resultList、ExecutionContext上下文)
位于System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode 语句、数组输入、管道输出、ArrayList和resultList, ExecutionContext)
Message+CategoryInfo:NotSpecified:(:)[Write Error],WriteErrorException +FullyQualifiedErrorId:Microsoft.PowerShell.Commands.WriteErrorException,Write-DataTable.PS1


您确定您的
哈希表(又名
{[Type]=1;[EID]=803;[FirstName]=Bob;[MiddleInit]=;[LastName]=Miller;[HireDate]=03031903;[Rule]=H;[Rate]=0100;[Status]=1;[Store]=8;[Dept]=04;[Class]=130;[Badge]=803;}
与数据库中的列匹配吗?确保类型匹配,尽管这可能不是问题所在。导致错误的原因可能是
MiddleInit
为空。您可以尝试创建一个与原始数据列相同但数据类型为varchar(8000)(如果使用unicode,则为nvarchar(4000))的临时表。然后,您可以使用SQL中的查询进行类型转换。您可以提供CSV文件的1行或2行SAME以及您正在运行的任何代码吗?您好,我确实尝试使用varchar(8000)创建一个包含通用列的表,这似乎不会影响我的错误。代码: