Re: json mysql конвертер букм арков мозиллы
Спасибо, все получилось. Перлокошмарик получился такой: #!/bin/sh 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/LONGVARCHAR/LONGTEXT/' |\ perl -pe 's/LONGVARCHAR/LONGTEXT/' |\ perl -pe 's/AUTOINCREMENT/auto_increment/' |\ perl -pe 's/TEXT UNIQUE/text/' |\ perl -pe 's///' |\ perl -pe 's///' |\ grep -v INTO sqlite_sequence |\ grep -v FROM sqlite_sequence |\ grep -v moz_inputhistory |\ grep -v CREATE UNIQUE |\ grep -v CREATE INDEX |\ grep -v CREATE TRIGGER |\ mysql -u root -p xbase Далее полученную таблицу можно отобразить, собрав все папки для каждой закладки, с помощью php (пример ниже). Все это нужно было, что бы представить и папки и теги как равнозначные атрибуты, с возможностью их выбора через иконки, для поиска нужной букмарки. (интерфейса в примере нет). htmlbody ?php $dbhost = localhost; $dbuser = base; $dbpass = base; $dbname = base; $dbtable=new_table; $link=mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_errno($link).mysql_error($link)); $db=mysql_select_db($dbname,$link) or die(mysql_errno($link).mysql_error($link)); convert_one(); //-- //-- function convert_one() { global $attr_parent; $add_bookmarks = mysql_query(SELECT * FROM `moz_places` WHERE `hidden` = '0'); while($bookmarks_data=mysql_fetch_row($add_bookmarks)) { list($id,$url,$title,$rev_host,$visit_count,$hidden,$typed,$favicon_id,$frecency) = $bookmarks_data; echo --, br; echo ' $url: ', $url, br; //$add=mysql_query(INSERT INTO `my_table` (экспортируйте данные, при желании, в ваш формат) ) or die(mysql_errno($link).mysql_error($link)); $snoop_attr = mysql_query(SELECT * FROM `moz_bookmarks` WHERE `fk` = '$id'); while($attr_data=mysql_fetch_row($snoop_attr)) { list($attr_id, $attr_type, $attr_fk, $attr_parent, $attr_position, $attr_title, $attr_keyword_id, $attr_folder_type, $attr_dateAdded, $attr_l echo ' $attr_title: ', $attr_title, br; //$add=mysql_query(INSERT INTO `my_table` (экспортируйте данные, при желании в ваш формат) ) or die(mysql_errno($link).mysql_error($link)); cycle(); } } } //-- //-- function cycle() { global $attr_parent; if ($attr_parent!=0){ snoop_parent(); } } //-- //-- function snoop_parent() { global $attr_parent; $snoop_attr_parent = mysql_query(SELECT * FROM `moz_bookmarks` WHERE `id` = '$attr_parent'); while($snoop_attr_parent_data=mysql_fetch_row($snoop_attr_parent)) { list($attr_id_parent, $attr_type_parent, $attr_fk_parent, $attr_parent, $attr_position_parent, $attr_title_parent, $attr_keyword_id_parent, $ if ($attr_title_parent!=){ if ($attr_title_parent!=Bookmarks Menu){ echo ' $attr_title_parent: ', $attr_title_parent, br; //$add=mysql_query(INSERT INTO `my_table` (экспортируйте данные, при желании, в ваш формат) ) or die(mysql_errno($link).mysql_error($link)); } } } cycle(); } ? /body/html Удачи. -- Sincerely, Nicholas -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
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 -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: json mysql конвертер букм арков мозиллы
Alexey Pechnikov wrote: Ерунда. Из одной базы перекинуть в другую задача элементарная. Что-то не получается сконвертировать из json в mysql: $ 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/' | \mysql -u root -p mybase Enter password: ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'moz_bookmarks VALUES(1,2,NULL,0,0,'',NULL,'',1219372686816687,1219372696583633' at line 1 Сначала подумал что проблема в ' , дал вот такую смешную команду (не знал как сразу все четыре ' убрать): $ 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/'//| perl -pe s/'// | perl -pe s/'//| perl -pe s/'// | \mysql -u root -p mybase Enter password: ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'moz_bookmarks VALUES(1,2,NULL,0,0,,NULL,,1219372686816687,1219372696583633)' at line 1 Но, как видно, и это не помогло. -- Sincerely, Nicholas -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: json mysql конвертер букм арков мозиллы
Alexey Pechnikov wrote: Ищется способ, как можно перевести букмарки iceweasel из формата json (или html) в базу данных mysql с изменением структуры. Сто раз говорил, что SQLite всегда поможет :-) sqlite3 places.sqlite 'select * from moz_bookmarks;' sqlite3 places.sqlite '.schema moz_bookmarks' Спасибо, это сильно упрощает задачу. Осталось придумать сборщик директорий, вроде решаемо. Artem Chuprina wrote: Эээ... Я правильно понял, что сэр желает таблицу с переменным числом колонок? Это правильное замечание. Пока ограничелся 20ю, в дальнейшем они будут храниться в другом формате. -- Sincerely, Nicholas -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: json mysql конвертер букм арков мозиллы
Alexey Pechnikov - debian-russian@lists.debian.org @ Tue, 7 Apr 2009 21:34:41 +0400: Ты структуру базы, которую он хотел, проскипал не посмотрев? AP См. письмо топикстартера то что есть и сейчас в файле бекапа AP закладок. Т.е. нужно вынуть всю инфу. Нет, думать над структурой AP таблички не надо, описание просто берется из БД мозиллы. А ты все-таки посмотри. На многоточие в его письме AP Легко. В одном поле БД сохраняется структура, к примеру, в тип данных array AP или тиклевый список, содержащий имена директорий. AP Надеюсь, топикстартер не собирается _хранить_ список директорий в AP отдельных полях БД - это лишено какого-либо смысла. Ой, зря надеешься... -- Дело говоришь! Теперь делай его. Кнышев. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Re: json mysql конвертер букм арков мозиллы
Nicholas - debian-russian@lists.debian.org @ Mon, 06 Apr 2009 14:36:53 -0400: N Ищется способ, как можно перевести букмарки iceweasel из формата json (или N html) в базу данных mysql с изменением структуры. N То есть надо, по каждому url сделать строку в mysql, где будут ячейки: N url, name, директория в которой находился url в букмарках Мозиллы, N поддиректория 1, поддиректория 2, ..., иконка, врямя создания закладки N (и тд, то что есть и сейчас в файле бекапа закладок). Эээ... Я правильно понял, что сэр желает таблицу с переменным числом колонок? N Как, примерно, должна выглядеть команда, делающая такую конвертацию ? Может, все-таки начать со структуры базы, укладывающейся в парадигму SQL? И только потом уже спрашивать про команду? P.S. Написание такой команды, будучи делом простым и неинтересным, но муторным, вероятно, будет стоить какой-то компенсации. -- Win-юзеры - это типа Win-модемов и Win-принтеров: такие же юзеры, но попроще, без мозгов и памяти на борту. http://www.livejournal.com/~dottedmag/158509.html -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org