Sqlite to MySql (sqlite excel, excel mysql)

Как перенести данные sqlite to mysql?

Прочитав статью до конца, вы сможете узнать о поэтапном переносе sqlite to mysql через Excel:

  • Как выгрузить данные из SQLite в Excel?
  • Как правильно написать небольшой VBA-скрипт для корректного формирования .sql-файла в процессе импорта sqlite to mysql?
  • Как произвести импорт в MySql данных, предварительно выгруженных их Sqlite в Excel?[

Теперь обо всем по порядку

Выгрузка базы данных из Sqlite в Excel для импорта sqlite to mysql

Такая необходимость у меня появилась по той причине, что долгое время автоматическая система для обработки электронной корреспонденции у меня крутилась на связке php+Sqlite. Теперь же пришло время вплотную заняться MySql, попутно подняв свой уровень html-верстки, написания php-скриптов, и создания небольших сайтов.

Графический инструмент (а как же без него, если мы виндузятники), который можно использовать — бесплатная программа Sqlite Administrator, которую можно успешно скачать по адресу http://sqliteadmin.orbmu2k.de/. Не вдаваясь в подробности ее использования, отмечу только, что выгрузка данных их существующей базы Sqlite в Excel производится очень просто: последовательно переходим на вкладку Edit Data, на левой панели название нужной таблицы, пункт меню Data, после него Export, тип экспортируемого файла указываем .xls

Написание скрипта VBA

Открываем получившийся Excel и создаем в нем VBA скрипт следующего содержания:

Dim str_sql, str_add, var_s2, var_s3, var_s4, var_s5, var_s6, var_s7 As String
Dim i As Integer
i = 2
'====================== начало запроса ==========================
str_sql = "INSERT INTO
`baza`(`id`,`filename`,`filedate`,`filesize`,`datereg`,`timereg`,`descript`,
`ip_client`,`rezerv`) VALUES "
'====================== формируем вторую часть запроса с данными для переноса ================
For i = 2 To 500
    var_s2 = Cells(i, 2)
    var_s3 = Cells(i, 3)
    var_s4 = Cells(i, 4)
    var_s5 = Cells(i, 5)
    var_s6 = Cells(i, 6)
    var_s7 = Cells(i, 7)
    var_s8 = Cells(i, 8)
    var_s7 = Replace(s7, "'", "\'")
    
    str_add = "(null, '" & var_s2 & "', '" & var_s3 & "','" & var_s4 & "','" & var_s5 & "','" & var_s6 & "','" & var_s7 & "','" & var_s8 & "',null),"
    str_sql = str_sql & str_add
Next
'================== вывод результатов в файл ================================
Open "rez.sql" For Output As #1
    Print #1, str_sql
    Close #1
'=========== ВНИМАНИЕ!!! конце выходного файла в любом текстовом редакторе
'=========== нужно будет убрать ПОСЛЕДНЮЮ ЗАПЯТУЮ
End Sub

Понятно, что в соответствии с конкретной структурой базы данных, нужно отредактировать названия и количество полей. После выполнения данного макроса, в папке, где находится файл Excel, появится файл rez.sql, для дальнейшей работы с которым необходимо будет сначала открыть его в любом текстовом редакторе и ужалить самую последнюю запятую.

Небольшой комментарий в отношении строки

s7 = Replace(s7, "'", "\'")

Такую строку необходимо использовать для всех полей (столбцов), в которых находится текстовая информация, в которой потенциально может присутствовать символ ‘ (апостроф). Таким образом мы его экранируем для корректной вставки в базу MySql. Более подробно об использовании функции Replace и экранировании вы можете прочитать в документации Excel(VBA) и MySql.

Теперь переходим к следующему этапу.

3 Replies to “Sqlite to MySql (sqlite excel, excel mysql)”

  1. а как импортировать файл excel в mysql ???
    есть условия, код товара например
    — если есть товар с таким кодом, и кодом того же поставщика, то он должен обновиться не изменяя своего ID и не записывая новую строку в базу данных, если же нет такого товара, то создается новый товар

    • Здравствуйте!

      Процитирую:
      «в соответствии с конкретной структурой базы данных, нужно отредактировать названия и количество полей[в макросе VBA]. После выполнения данного макроса, в папке, где находится файл Excel, появится файл rez.sql»

      далее

      «создать базу данных MySql и таблицу, структура которой соответствует импортируемой базе.»

      и

      «в MyPhpAdmin идем на вкладку Импорт, выбираем сформированный файл .sql и указываем нужную кодировку»

      Если не получается — опишите на e-mail подробное техзадание. О цене — договоримся.
      —————————
      Дубль — на Ваш e-mail

  2. Pingback: Выделение строк таблицы, подсветка строк при наведении курсора

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.