Можно ли конвертировать дамп базы данных SQlite в MySQL?

79
10 сентября 2021, 09:20

Есть дамп базы SQlite, мне нужно получить скрипт для создания такой же базы данных с полями и тд, для MySql. Дамп я сделал, заменил в нем AUTOINCREMENT на AUTO_INCREMENT. Но при создании MySql не воспринимает это. Вот сам дамп.

BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS "IpLink" (
    "LinkId"    INTEGER NOT NULL,
    "IpAddressId"   INTEGER NOT NULL,
    CONSTRAINT "PK_IpLink" PRIMARY KEY("LinkId","IpAddressId"),
    CONSTRAINT "FK_IpLink_IpAddresses_IpAddressId" FOREIGN KEY("IpAddressId") REFERENCES "IpAddresses"("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_IpLink_Links_LinkId" FOREIGN KEY("LinkId") REFERENCES "Links"("Id") ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS "IpAddresses" (
    "Id"    INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
    "ClientIp"  TEXT
);
CREATE TABLE IF NOT EXISTS "Links" (
    "Id"    INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
    "FullLink"  TEXT NOT NULL,
    "ShortLink" TEXT,
    "Clicks"    INTEGER NOT NULL DEFAULT 0,
    "UniqueClicks"  INTEGER NOT NULL DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" (
    "MigrationId"   TEXT NOT NULL,
    "ProductVersion"    TEXT NOT NULL,
    CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY("MigrationId")
);
INSERT INTO "IpLink" VALUES (21,1);
INSERT INTO "IpLink" VALUES (37,1);
INSERT INTO "IpAddresses" VALUES (1,'::1');
INSERT INTO "Links" VALUES (21,'https://ilovebluesguitar.com/freddie-king-have-you-ever-loved-a-woman/','868ZGb',1,0);
INSERT INTO "Links" VALUES (36,'http://www.yandex.ru','xn5nB3',0,0);
INSERT INTO "Links" VALUES (37,'http://www.yandex.ru','Xy1woV',1,1);
INSERT INTO "__EFMigrationsHistory" VALUES ('20180324111416_Create Link Table','2.0.1-rtm-125');
INSERT INTO "__EFMigrationsHistory" VALUES ('20180326171121_Ip table, clicks columns, many-to-many relation','2.0.1-rtm-125');
CREATE INDEX IF NOT EXISTS "IX_IpLink_IpAddressId" ON "IpLink" (
    "IpAddressId"
);
COMMIT;
Answer 1

Нужно:

  1. Удалить транзакционную обёртку
  2. Заменить двойные кавычки на бэктики (или удалить - криминальных имён не используется)
  3. Изменить порядок создания таблиц - таблица с FK должна создаваться после референсной
  4. Изменить индекс PK___EFMigrationsHistory и установить длину индексируемой части поля
  5. Изменить порядок наполнения таблиц - таблица с FK должна наполняться после референсной
  6. Удалить IF NOT EXISTS из CREATE INDEX

Итог - см. fiddle

READ ALSO
SQL select из четырех таблиц

SQL select из четырех таблиц

Не знаю какую конструкцию mysql использоватьУ меня есть четыре таблицы:

106
Ошибка MySql при поиске на сайте

Ошибка MySql при поиске на сайте

Перенесли сайт на новый VDS серверПытаемся воспользоваться поиском, переходит на страницу поиска и пишет DB query error

140
Как правильно написать MVC роутер?

Как правильно написать MVC роутер?

Всем приветСделал небольшую MVC

97
Invalid API key с прямым геокодированием в геокодере

Invalid API key с прямым геокодированием в геокодере

Всем привет! Идея такая: Нужно взять координаты места по его названию и записать их в JSON-файлДальше из этого файла взять координаты и расставить...

137