【问题标题】:How to convert text file into SQL insert statement?如何将文本文件转换为 SQL 插入语句?
【发布时间】:2020-03-19 18:45:09
【问题描述】:

我会上传一个文本文件,它会将每一行转换成一个SQL插入语句,这样就可以插入到数据库中。

我试过了,这里有 3 个问题:

  1. 它将一次插入 5 倍的值
  2. 所有的编号都应该跳过
  3. 作为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

我的输出

【问题讨论】:

    标签: sql asp.net vb.net file-io


    【解决方案1】:

    注意这一行:

    file_contents += reader.ReadLine
    

    它被添加到初始 file_contents 变量中,因此当它被拆分以创建 arrayOutput 时,前 7 个数组元素始终相同。

    也许可以试试 file_contents = reader.ReadLine,这样每次迭代只分割一行。

    【讨论】:

    • 我只是想调试,但我没有意识到这一点。还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-03-19
    • 2023-03-09
    • 1970-01-01
    • 2015-12-29
    • 2022-06-11
    • 2012-12-25
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多