Я конвертирую базу данных sqlite3 в mysql.
У меня есть хороший командный файл для sed, который изменяет AUTOINCREMEMT и другие необходимые вещи, но я застрял на последней: двойные кавычки.
Формат дампа sqlite3:
CREATE TABLE "products" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255),
"desc" varchar(255) );
INSERT INTO "products" VALUES(1,'Flux Capacitor',
'This is the "real" thing.\nPromise!')
Для первого утверждения я могу заменить все двойные кавычки на обратные кавычки, и mysql будет счастлив.
Однако информация о моем продукте содержит двойные кавычки в данных. Как я могу исключить их из замены? Я пытался заменить только эти двойные кавычки заполнителем, затем я мог заменить все остальные двойные кавычки, затем я мог бы заменить заполнитель обратно, но мое регулярное выражение не соответствует номиналу.
Это было так далеко, как я получил:
/"[^"]*"/s
... чтобы соответствовать текстам с двойными кавычками, но я не мог понять, как определить, что должны совпадать только двойные кавычки внутри одинарных кавычек.