【发布时间】:2016-02-15 22:17:23
【问题描述】:
我有一个关于简化 VBScript/SQL 代码的基本问题。我有一个工作脚本,它从一个表中提取数据,通过分隔符“|”对其进行解析,然后将其重新插入到第二个 254 列表中。在这样做的过程中,我明确地为插入写出每个字段,为值写出数组的每个部分。显然,这不是很有效。为了简化这一点,我一直在尝试遍历数组,插入结果行,然后移动到下一行,如下所示:
'assume declaration of recordset, SQL connection, pull from first table, ect.
if recordset.EOF then
wscript.echo "No new records found."
else
Do While NOT Recordset.EOF
dump = recordset("data")
if dump <> "" then
dump = Replace(dump,"'","")
cleanup=split(field,"|")
if instr(cleanup(0),"RECORD") then
for i = 1 to 254
cleanup(i)= cleanup(i) & "','"
i= i + 1
next
end if
strRecsql="INSERT INTO records_fields VALUES ('" & cleanup & "')"
connection.execute strRecsql
现在,当我明确说明所有字段和值时,我解决了所有数据类型不匹配问题。现在我正在循环,我得到了数据类型不匹配错误,我认为(总是危险的)意味着脚本正在到达插入点并且失败。
我的长代码包括诸如 cleanup(1) & "," & cleanup(2) & "," ''等等 显然,我在尝试循环时做错了——我只是因为数据类型不匹配而被难住了。
非常感谢您对此问题的任何见解。我很想有一个有效且有效的代码,我只是对 VBScript 和 SQL 之间的数据类型交换感到好奇。我发现了一些关于变体类型和一般 SQL 类型的优秀资源,但没有解决交换的问题。
样本转储值:
“记录|2-10-15 00:00:00|SMITH|JOHN|+14.59|订书钉||||||AE15679|j2700|||办公用品|||”【问题讨论】:
-
Mysql 和 sql server 是两个不同的产品。你用的是哪一个?
-
cleanup变量是一个数组。您不能简单地将数组与字符串连接起来。您需要使用 join() 函数将数组展平为字符串。 -
你能举一个
dump值的例子吗? -
@Shadow -- 抱歉,这里有错误标记。我绝对不需要通过混合代码来搅浑水。谢谢你的提示!它至少让我走上了正确的轨道。我现在在那里加入,但我似乎遇到了另一面墙,字符串超出范围。我想我之前没有处理过这个问题,因为我将数组的每个部分单独编码成一个字符串?只是想解决这个问题。再次感谢!
-
@Susilo -- 一个典型的
dump值如下所示:"RECORD|2-10-15 00:00:00|SMITH|JOHN|+14.59|STAPLES| | | | | | AE15679|j2700| | |办公用品| | |" ... 以此类推,共 254 列。其中很多是空的,当我手动写出整个数组输入时,这实际上并没有给我带来问题。
标签: sql sql-server vbscript type-conversion