我有一个从CSV上传项目的脚本。CSV 有 3 列,数据库中有 3 列。
代码 (nvarchar 255(
姓名 (nvarchar 255(
价格(货币(
脚本如下
' --- Connect to File.CSV
csvConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
&Server.MapPath("..upload") &";Extended
Properties='text;HDR=Yes;FMT=Delimited';"
Set connCSV = Server.CreateObject("ADODB.Connection")
connCSV.Open csvConnStr
set csvCmd = Server.CreateObject("ADODB.Command")
csvCmd.ActiveConnection = connCSV
csvCmd.CommandType = 1
csvCmd.CommandText = "SELECT * FROM upload.csv"
set rsCsv = csvCmd.Execute
csvCode= rsCsv.fields.item(0)
csvName= rsCsv.fields.item(1)
csvPrice = rsCsv.fields.item(2)
注意 - 我已经省略了通过 csv 的循环,因为不觉得这是我问题的原因,但可以根据要求包含。
set insertCmd = Server.CreateObject("ADODB.Command")
insertCmd.ActiveConnection = conn
insertCmd.CommandType = 1
insertCmd.CommandText = "INSERT INTO tblProducts (code, name, price) VALUES (?,?,?)"
insertCmd.Parameters.append(
insertCmd.CreateParameter("@code",200,1,255,csvCode))
insertCmd.Parameters.append(
insertCmd.CreateParameter("@name",200,1,255,csvName))
insertCmd.Parameters.append(
insertCmd.CreateParameter("@price", 6, 1, , csvPrice))
insertCmd.Execute
我的 CSV 具有以下结构
Item Code, Item Name, Item Price
00001, First Item, 100
00002, Second Item, 100
脚本将正常插入,但物料代码以字符"F"开头的情况除外。
例
Item Code, Item Name, Item Price
F0445, Item X, 200
将插入一条记录,但在数据库中将具有 Code = 445
这仅适用于 F,因此诸如
Item Code, Item Name, Item Price
G0445, Item Y, 200
FG0445, Item X, 200
会插入得很好。F 是 VBScript 中的特殊字符吗?为什么它不会插入整个代码?
从评论中回答。
我认为 F 以某种方式格式化数据,因此通过使用单引号使值为"F0445">应该可以向数据库添加 varchar? 所以最终的SQL应该是: 插入到tbl产品(代码,名称,价格(值("F0445","项目X",200(,单引号告诉sql它是文本插入的。
同样从您的上一条评论中,将 Excel 中的列/单元格格式化为文本。