我已經發現如何通過another question將CSV導入我的Access數據庫。但在answer中沒有關於如何在導入時定位特定列的信息。我怎樣才能確保CSV中的正確列被放到我的數據庫的正確列中?在導入時指定目標列(CSV到Access)
我需要能夠編輯/添加到列值,因爲他們得到導入使用傳統的ASP。示例:
- CSV中的第4列是一個用戶標識,我需要能夠在它進入電子郵件列的數據庫時將「@ domain.com」添加到結尾。
- 第6欄是一個分類:如果它的值是「老師」,那麼當它被導入時,我需要將其更改爲「教室」。
我正在使用一些舊代碼&我沒有創建的DB。相信我,如果可以的話,我會使用其他的東西,,所以請不要使用MS Access。
我想這整個事情歸結爲:
- 如果previous question's answer真的讓我對待CSV同一個數據庫表,那我怎麼才能選擇列作爲一個真正的數據庫表?
//更新:
我已經把一切都弄好我怎麼相信也是應該的,但是我收到一個錯誤:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/datazone_bkup/Rollover/importTeachers.asp, line 12
線我的完整代碼如下:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &_
Server.MapPath("\path\to\file") & ";Extended Properties='text;HDR=no;FMT=Delimited';"
Set connCSV = Server.CreateObject("ADODB.Connection")
connCSV.Open strConn
Set CSV = Server.CreateObject("ADODB.recordset")
CSV.open "SELECT * FROM teachers.csv", conn
do until CSV.eof
UserName = CSV.Fields(4)
LastName = CSV.Fields(1)
FirstName = CSV.Fields(2)
MiddleName = CSV.Fields(3)
School = CSV.Fields(5)
if CSV.Fields(6) = "Teacher" then
SecLevel = "Classroom"
end if
Active = "Yes"
TeacherNumber = rsCSV.Fields(0)
rsCSV.movenext
sql = "INSERT INTO tblTeacher (UserName, LastName, FirstName, MiddleName, School, SecLevel, Active, TeacherNumber) " &_
"VALUES (" &_
"'" & UserName & "','" & LastName & "','" & FirstName & "','" & MiddleName & "'," &_
"'" & School & "','" & SecLevel & "','" & Active & "','" & TeacherNumber & "'" &_
")"
on error resume next
conn.execute(sql)
loop
@HansUp,當我嘗試使用!
如rsDB!UserName
,我接到Syntax Error
。所以我回到設置CSV列值的變量。
再次感謝您的幫助。
這是嚇人的sql注入黑客攻擊 –
@JoelCoehoorn,謝謝你的關注;但是,這是在內部網上,並且受密碼保護。在這個網站上SQL注入的可能性很小。 – joshmax