[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: