Как перенести данные 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.
Теперь переходим к следующему этапу.
а как импортировать файл excel в mysql ???
есть условия, код товара например
— если есть товар с таким кодом, и кодом того же поставщика, то он должен обновиться не изменяя своего ID и не записывая новую строку в базу данных, если же нет такого товара, то создается новый товар
Здравствуйте!
Процитирую:
«в соответствии с конкретной структурой базы данных, нужно отредактировать названия и количество полей[в макросе VBA]. После выполнения данного макроса, в папке, где находится файл Excel, появится файл rez.sql»
далее
«создать базу данных MySql и таблицу, структура которой соответствует импортируемой базе.»
и
«в MyPhpAdmin идем на вкладку Импорт, выбираем сформированный файл .sql и указываем нужную кодировку»
Если не получается — опишите на e-mail подробное техзадание. О цене — договоримся.
—————————
Дубль — на Ваш e-mail
Pingback: Выделение строк таблицы, подсветка строк при наведении курсора