sql - 如何将文本文件转换为 SQL 插入语句?
问题描述
我会上传一个文本文件,它会将每一行转换为一个 SQL 插入语句,以便它可以插入到数据库中。
正如我所尝试的,这里有3个问题:
- 它将一次插入5倍的值
- 所有的号码都应该跳过
- 作为strSQL,我需要将arrayOutput一个一个插入,将它们全部插入
这是我的文本文件
No Subject Code Subject Name Student ID Student Name Student Email Lecturer Name Lecturer Email
1 BSOA011 COMPUTERIZED PAYROLL 1751234-BSOA WONG QI YI dev.ng@outlook.com LIM BEE HUI semd2019@gmail.com
2 SEMD008 COMPUTER NETWORKING 1851234-SEMD LIM FENG FENG dev.ng@outlook.com NG WAI KONG semd2019@gmail.com
3 ITIN015 DISASTER RECOVERY MANAGEMENT 1851234-ITIN HO DENG DENG dev.ng@outlook.com SZE CHEN NEE @ SOO CHEN NEE semd2019@gmail.com
4 ECOM004 WEB DEVELOPMENT SKILLS: WEB PROGRAMMING (PHP & MYSQL) 1851234-ECOM KONG JIA WEN dev.ng@outlook.com TAN MING MING semd2019@gmail.com
5 CGDD002 PRACTICAL ICT SKILLS 1951234-CGDD CHONG SIAO YU dev.ng@outlook.com NG WAI KONG semd2019@gmail.com
这是我的代码
Private Sub ReadAndReplace()
Dim file_contents As String = ""
locationPath = Server.MapPath("~") & "File\" & filename
If File.Exists(locationPath) Then
Dim reader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(locationPath)
reader.ReadLine() 'skip first line
Do While reader.Peek() <> -1
file_contents += reader.ReadLine
Dim arrayOutput As String() = Split(file_contents, vbTab)
Dim errMessage As String = ""
Dim strConn As String = "server=localhost;port=3306; user id=root;" _
& "password=;database=school;SslMode=none"
Dim oDBCon As New MySqlConnection(strConn)
Try
oDBCon.Open()
'INSERT RECORD
Dim strSQL As String = "INSERT INTO studentinfo(subject_code, subject_name, student_id,
student_name, student_email, lecturer_name, lecturer_email)VALUES('" _
& arrayOutput(1) & "','" & arrayOutput(2) & "','" & arrayOutput(3) _
& "','" & arrayOutput(4) & "','" & arrayOutput(5) _
& "','" & arrayOutput(6) & "','" & arrayOutput(7) & "');"
Dim oCommand2 As New MySqlCommand(strSQL, oDBCon)
oCommand2.ExecuteNonQuery()
Catch ex As Exception
errMessage = ex.Message
Finally
oDBCon.Close()
End Try
Loop
reader.Close()
End If
End Sub
解决方案
注意这一行:
file_contents += reader.ReadLine
它正在添加到初始 file_contents 变量中,因此当它被拆分以创建 arrayOutput 时,前 7 个数组元素始终相同。
也许尝试 file_contents = reader.ReadLine 这样你每次迭代只分割一行。
推荐阅读
- mysql - 从 db 表中获取行
- reactjs - 我可以在不违反 React 设计原则的情况下在 reducer 中验证令牌吗?
- java - 为什么java支持255维数组,而在现实生活中我们很少超过2D?
- python - Python Pong Game在1后没有增加点
- f# - F# - 以微秒为单位的时间转换为星期几
- macos - 无法从 MacOS 上的主机浏览器连接到 Docker 容器
- python - 如何打开特定目录中的文件?
- javascript - Twitter typeahead 未突出显示该元素
- python - 如何提高对 1M 行数据进行数百次 pandas .loc 调用的速度?
- javascript - 当有人在 Discord.js 中键入未知命令时,如何发出“无效命令”消息?