PowerShell将API返回JSON写入SQL Server表的问题求助
API返回JSON导入SQL Server表的截断错误修复
问题现象
执行PowerShell脚本将API返回的JSON数据插入SQL Server表时,触发以下错误:
String or binary data would be truncated in table 'database.table', column 'associateOID'. Truncated value: '1 2 3 4 5 6 7 8'. The statement has been terminated.
问题根源
原脚本的foreach循环逻辑错误,没有正确遍历单条记录,而是直接使用整个$associateOID数组进行插入,导致插入的内容长度远超associateOID字段的限制,触发数据截断报错。
原错误代码片段
foreach($ID in $associateOID){ $insertquery=" INSERT INTO $tableName ([associateOID],[timeCards]) VALUES ('$associateOID','$timeCards')" $Command.CommandText = $insertquery $Command.ExecuteNonQuery() }
修正后的代码片段
foreach($record in $Time.teamTimeCards){ $aOID = $record.associateOID $timeCards = $record.timeCards | ConvertTo-Json -Compress -Depth 100 $insertquery=" INSERT INTO $tableName ([associateOID], [timeCards]) VALUES ('$aoid', '$timeCards')" $Command.CommandText = $insertquery $Command.ExecuteNonQuery() }
修复说明
- 调整遍历对象:改为遍历
$Time.teamTimeCards中的单条记录,确保每次处理一条数据 - 提取单个字段值:从单条记录中取出
associateOID赋值给$aOID,保证插入的是单个合法值,避免数组内容超长 - 格式化嵌套数据:将
timeCards字段通过ConvertTo-Json转为压缩JSON格式,既保证数据结构完整,也适配SQL字段的存储要求
内容的提问来源于stack exchange,提问作者jdids
相关产品推荐
相关产品推荐

