Обновление CSV в MySQL - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! У меня есть файлы csv их необходимо загружать в удаленную базу. При этом если такие записи есть то обновлять определенные поля а если нету то добавлять. Файлов много, записей в общей сложности будет свыше 30000, обновление данных раз в неделю. вот то что сам сделал:
Листинг программы
  1. For Each File In arrFiles
  2. Label1.Text = Label1.Text & vbCrLf & "Обработка файла " & IO.Path.GetFileName(File)
  3. Lines = IO.File.ReadAllLines(File, System.Text.Encoding.Default)
  4. 'Импорт в таблицу USRUSER - хранятся логин пароль и другая информация о потребителе
  5. If InStr(IO.Path.GetFileName(File), "usrUser") > 0 Then
  6. For i = 0 To Lines.Count - 1
  7. CountRecord = CountRecord + 1
  8. Array = Split(Lines(i), ";")
  9. If Array(0) <> "" And Array(0) <> "0" Then
  10. cmd.CommandText = "SELECT * from usrusers Where Login= '" & Array(0) & "'"
  11. Try
  12. reader = cmd.ExecuteReader()
  13. If reader.HasRows Then
  14. cmd.CommandText = "UPDATE usrusers SET fio='" & Array(1) & "' ,adres='" & Array(2) &
  15. "',Debt=" & Array(3) & ",`Role`=0,phone='" & Array(4) & "',email='" & Array(5) &
  16. "' WHERE login='" & Array(0) & "'"
  17. Else
  18. cmd.CommandText = "INSERT INTO usrusers (login,fio,adres,Debt,phone,email,`Role`) VALUES ('" & Array(0) & "','" &
  19. Array(1) & "','" & Array(2) & "','" & Array(3) & "','" & Array(4) & "','" & Array(5) & "',0)"
  20. End If
  21. reader.Close()
  22. cmd.ExecuteNonQuery()
  23. Catch ex As Exception
  24. End Try
  25. End If
  26. Next
  27. End If
  28. 'Конец импорта в таблицу usrUser
  29. 'Импорт в таблицу usroperation - хранятся начисления и оплата
  30. If InStr(IO.Path.GetFileName(File), "usroperation") > 0 Then
  31. For i = 0 To Lines.Count - 1
  32. Array = Split(Lines(i), ";")
  33. IDusr = OpredelenieIDusr(Array(0))
  34. Try
  35. cmd.CommandText = "SELECT * FROM usroperation Where UserID= '" & IDusr & "' and Data=" & Array(2) & " and VidOplati=" & Array(4)
  36. reader = cmd.ExecuteReader()
  37. If reader.HasRows Then
  38. 'cmd.CommandText = "UPDATE usroperation SET Vid='" & Array(1) & "' ,Data='" & Array(2) &
  39. ' "',Summa=" & Array(3) & ",`VidOplati`=" & Array(4) & " WHERE login='" & IDusr & "'"
  40. Else
  41. cmd.CommandText = "INSERT INTO usroperation (UserID,Vid,Data,Summa,VidOplati) VALUES ('" & Array(0) & "','" &
  42. Array(1) & "','" & Array(2) & "','" & Array(3) & "','" & Array(4) & ")"
  43. End If
  44. reader.Close()
  45. cmd.ExecuteNonQuery()
  46. Catch ex As Exception
  47. End Try
  48. Next
  49. End If
  50. Next
Это все работает но очень медленно. И я точно знаю что есть метод проще (это всегда так, ибо я тот еще кодер) но найти не смог. На 4800 записей ушло 20 минут.

Решение задачи: «Обновление CSV в MySQL»

textual
Листинг программы
  1.   cmd.CommandText = "Load DATA LOCAL INFILE '\tmp" & IO.Path.GetFileName(File) & "' REPLACE INTO TABLE  `usrusersTemp`" &
  2. " FIELDS TERMINATED BY  ';'
  3.                     (
  4.                    `login` ,
  5.                    `fio` ,
  6.                    `adres` ,
  7.                    `Debt` ,
  8.                    `phone` ,
  9.                    `email`
  10. )"
  11.                     Debug.Print(cmd.CommandText)
  12.                     cmd.ExecuteNonQuery()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут