Re: json > mysql конвертер букмарков мозиллы
Alexey Pechnikov wrote:
Насколько я вижу, проблема в двойных кавычках вокруг имени таблицы:
"moz_bookmarks". Замените "moz_bookmarks" на moz_bookmarks. Апострофы не
трогайте - удалив их, вы получаете некорректный SQL, значения вида "0,0," не
пропустит ни одна из известных мне СУБД.
Спасибо, "процесс пошел", 5800 записей перевел.
Но вылетела ошибка:
$ sqlite3 places.sqlite .dump | \grep -v "BEGIN TRANSACTION;" | \grep -v
"COMMIT;" | \perl -pe 's/INSERT INTO \"(.*)\" VALUES/INSERT INTO "\1"
VALUES/' |\perl -pe 's/LONGVARCHAR/LONGTEXT/' |\perl -pe
's/AUTOINCREMENT/auto_increment/' | perl -pe 's/TEXT UNIQUE/text/'|
perl -pe 's/"//' | perl -pe 's/"//' | \mysql -u root -p mybase
Enter password:
ERROR 1146 (42S02) at line 5815: Table 'xbase.sqlite_sequence' doesn't exist
"sqlite_sequence" в дампе json встречается всего дважды (5815,5816 строки):
DELETE FROM sqlite_sequence;
INSERT INTO sqlite_sequence VALUES('moz_keywords',4);
(странно что CREATE нет)
попробовал их вообще убрать:
$ sqlite3 places.sqlite .dump | perl -pe "s/INSERT INTO sqlite_sequence
VALUES('moz_keywords',4);//" | perl -pe 's/DELETE FROM
sqlite_sequence;//' |\grep -v "BEGIN TRANSACTION;" | \grep -v "COMMIT;"
| \perl -pe 's/INSERT INTO \"(.*)\" VALUES/INSERT INTO "\1" VALUES/'
|\perl -pe 's/LONGVARCHAR/LONGTEXT/' |\perl -pe
's/AUTOINCREMENT/auto_increment/' | perl -pe 's/TEXT UNIQUE/text/'|
perl -pe 's/"//' | perl -pe 's/"//' | \mysql -u root -p mybase
Enter password:
ERROR 1146 (42S02) at line 5816: Table 'xbase.sqlite_sequence' doesn't exist
Несовсем понятно, как может быть "ошибка в строке 5816", если эта строка
целиком убрана:
perl -pe "s/INSERT INTO sqlite_sequence VALUES('moz_keywords',4);//"
Возможно, ошибка в синтаксисе ?
--
Sincerely,
Nicholas
Reply to: