K2T.eu :: Forum
WTW => Rozszerzenia => Pozostałe => Wątek zaczęty przez: Siwy w Listopada 03, 2010, 00:02:45 am
-
Program z założenia powinien łączyć kilka archiwów wtw, np. kiedy zmuszeni byliśmy stworzyć gdzieś profil od nowa i teraz chcielibyśmy dołączyć archiwum z tego czasu do starego.
Użycie:
wybieramy archiwum, do którego chcemy importować, następnie kilka archiwów, która mają zostać importowane.
program kopiuję tabele wtw_chat_index(index_id, contact_id, contact_net, start_time) i wtw_chat_data(index_id, entry_time, entry_text, entry_flags) z wymienionych baz do podstawowej zmieniając index_id, żeby były unikatowe
uwagi:
-zrobić kopię zapasową! teraz robi się sama
-używać przy wyłączonym wtw
-działa wolno, także cierpliwości
Update 0.1.1:
Kopiowanie działa dużo szybciej, thx whd.
Update ver. 0.2.0:
-interfejs okienkowy (jestem z niego dumny, bo to mój pierwszy program w WinApi :P )
-całość działa dużo szybciej (tak, jak powinna od początku), dzięki inteligentniej napisanym zapytaniom SQL
-SQLite aktualizowane do 3.7.4
Update ver. 0.2.1 - 30.01.11:
-import archiwum GG10 (GG8 ma takie samo archiwum?), zwrócić uwagę, czy czasy się nie przekłamują - wtw samo nauczyło się to robić, więc opcja już niepotrzebna
-zmiany kosmetyczne
-trochę więcej informacji o ewentualnych błędach
prośby/zamówienia/plany na przyszłość:
-kadu
-tlen 7
-
Przy wywoływaniu insert korzystasz z transakcji? Jeśli nie używasz begin transaction (...) commit; to sqlite każdego inserta traktuje jako osobną transakcję, która musi być potwierdzona przez co wydajność takich zapytań znacznie spada (tak wyczytałem w docach na stronie oficjalnej, wczoraj zacząłem się w to zagłębiać dopiero).
btw to kopiowanie odbywa się metodą 'na pałę' tzn czy dubluje ewentualnie rozmowy?
-
Właśnie tak myślałem, że commit jest za każdym razem wywoływany, ale używam tylko jednej funkcji sqlite3_exec i nie wiedziałem, jak to zmienić, poczytam.
Nie żadnych duplikatów nie sprawdza, bo niby skąd ta sama rozmowa miałaby być w dwóch różnych archiwach?
Przy kopiowaniu zmieniam tylko id w tabelach i zamieniam ' w treści wiadomości na '', żeby sql poprawnie je zinterpretował.
edit:
faktycznie, po dodaniu sqlite3_exec(db1, "BEGIN", 0, 0, 0); i [...]COMMIT[..] samo kopiowanie wykonuje się dużo szybciej, sqlite3_open nadal jednak długo trwa, ale to zależy od rozmiaru bazy.
Jednak to nie sqlite3_open, a
"SELECT max(wtw_chat_index.index_id), max(wtw_chat_data.chat_id) FROM wtw_chat_index, wtw_chat_data;",
którym sprawdzam najwyższe indeksy. Zna ktoś jakieś szybsze zapytanie?
-
ja czesto robie ze kopiuje archiwum ze stacjonarki na lapa i chciałbym tylko rozniece pomiedzy mergowac
moglbys zakladac indeksy unikalne, robic wszystkie inserty i po całej operacji usunac indeksy, duplikaty sie nie dodadza :)
-
*przypuszczenia* a to id to nie jest może serial od razu? wtedy nie byłoby problemu z szukaniem najwyższego.
-
Nie żadnych duplikatów nie sprawdza, bo niby skąd ta sama rozmowa miałaby być w dwóch różnych archiwach?
Chociażby multilogowanie. Poza tym ja mam spory śmietnik z archwium bo mam na piecu, lapie i jescze mobilne na pienie. Wszystkie pochodzą z jednego tylko kopiowane w różnym czasie ;)
Nie za bardzo rozumiem pomysł kwiateusza z unikalnymi indeksami. Jeśli mamy dwie różne bazy to na jakiej zasadzie przydzielić unikalne indeksy żeby dane rozmowy miały ten sam indeks? Czy źle to rozumiem?
-
po założeniu indeksu na login i tresc rozmowy baza przy insercie pominie wartosci ktore sie dublują :)
ja tak sie bawiłem przy wawalaniu duplikatów rozmów z archiwum
-
po założeniu indeksu na login i tresc rozmowy baza przy insercie pominie wartosci ktore sie dublują :)
można też ręcznie sprawdzać, czy się nie powtarzają, ale czy nigdy nie dostaliście 2x identycznej wiadomości od tej samej osoby, np. 'cześć', albo 'chodź na piwo'?
-
Nie w tym samym entry_time.
-
A wiadomości przy multilogowaniu mają ten sam entry_time na wszystkich instancjach programu? Znaczy, czy to pole jest ustalane przy wysyłaniu wiadomości czy jej odebraniu?
-
a mi WinRAR zgłasza problem z plikiem z pierwszego postu: "archiwum ma niewłaściwy format lub jest uszkodzone", moge prosić o ponowne wrzucenie?
a swoją drogą, jakby programik wyłapywał duplikaty, to by było bardzo fajnie z jego strony :)
-
Trzeba gdzieś na forum umieścić wielkimi literami info o tym, aby załączniki pobierać Firefox'em, inaczej się nigdy nie uwolnimy od tego typu pytań i uwag...
jest wątek o tym w poradnikach, a przeczytanie poradników powinno być pierwszą czynnością którą każdy nowy powinien zrobić //zhvir
-
A wiadomości przy multilogowaniu mają ten sam entry_time na wszystkich instancjach programu? Znaczy, czy to pole jest ustalane przy wysyłaniu wiadomości czy jej odebraniu?
entry_time zależy od czasu lokalnego jaki masz na kompie więc bardzo prawdopodobne, że będzie się różnić dla wiadomości z multilogowania
@zhvir, poważnie myślisz, że ktoś kto traktuje to forum tylko i wyłącznie jako repo z wtyczkami i nie zamierza tu postować przeczyta wszystkie poradniki? :)
-
Ale zanim zada się jakieś pytanie warto poszukać, czy nie jest w faq albo w poradnikach.
-
hmm, u mnie przy próbie połączenia od razu wyrzuca błąd, że aplikacji nie da się uruchomić, ponieważ brakuje pliku msvcr100.dll Ponowne zainstalowanie aplikacji może rozwiązać problem.
Jakiś pomysł na to?
-
Zainstaluj Microsoft Visual C++ 2010 Redistributable Package.
-
faktycznie nie miałem, że też takie zaćmienie umysłu mi przyszło ;) dzięki za pomoc
-
odnośnie duplikatów, wtw dorobiło się opcji ich usuwania (archiwum/konserwacja/kompaktowanie), więc problem z głowy.
-
W zasadzie, to duplikaty są kasowane od roku przy kompaktowaniu, acz! Opcja wyłączenia tejże operacji doszła w ostatniej becie ;P
-
Update w pierwszym poście.
-
U mnie wywala błąd, mimo wielu prób z różnymi nazwami, kombinacjami, nie działa :(
Kopia zapasowa utworzona.
Archiwum pomyślnie otwarte.
Znaleziono 9047 rozmów.
Znaleziono 75576 wiadomości.
database.sq3:
SQL error (n)SQL error (c)
Bazy są takie same z tym, że jedna posiada dodatkowe kilkanaście rozmów, a druga inne kilkadziesiąt rozmów :(
-
hmm, w takim razie cierpliwości, aktualnie trochę przerabiam program, postaram się rozbudować komunikaty o błędach, to szybciej dojdziemy, gdzie jest problem.
-
A może ja coś źle robię?
Np. nie tam gdzie trzeba ładuje pliki, albo coś innego? ;)
-
Nie, to raczej nie Twoja wina, z importowanym archiwum jest coś nie tak, ale boć czego nie przewidziałem. Sprawdź, czy otwiera da się je otworzyć tym programem: http://sourceforge.net/projects/sqlitebrowser/
-
Obie bazy danych się otwierają w nim, rozmowy o które mi chodzi też tam są ;)
Może jednak coś nie tak robię... pokaż na screenach jak Ty to robisz, czyli gdzie wybrać które archwium, itp. ;)
Ja spróbuję na innym kompie i systemie :D
-
Update w pierwszym poście
mICh@el, sprawdź, czy teraz wyświetla się coś więcej o błędzie
-
Wywala mi tak:
Kopia zapasowa utworzona.
Archiwum pomyślnie otwarte.
database.sq3:
WTW
no such column: aqq.eucallback requested query abortkoniec
-
a daloby rade jeszcze z nowego kadu zrobic import (korzystaja z sqlite3)? ;p
-
@mICh@eL
O brakuje kilku nowych linii, trzeba dostawić. Wygląda na to, że problem jest związany z aqq, miałbym do Ciebie taką prośbę:
-zrób kopię zapasową archiwum,
-uruchom jakiś profil wtw, z tą kopią,
-usuń z niej rozmowy z innych protokołów, zostawiając tylko te w aqq
-usuń wszystko, co uważasz za prywatne
i wyślij mi tak okrojone archiwum (nadal powinno powodować błędy)
@adrian_007, najdalej po sesji się zainteresuję kadu
-
No to jak lecą życzenia, nie dałoby rady zrobić coś z 7 wersją Tlena? Żaden komunikator nie obsługuje importu tego wolno-rozwijającego się twora, co prawda dalej w wersji beta, ale może struktury archiwum w finalu nie zmienią i robota nie poszłaby na marne - ewentualnie byłaby podstawa do dalszej przeróbki w razie czego.
-
@siwy
Tylko że ja korzystałem tylko z GG, kiedyś próbowałem przenieść archiwum z GG przez AQQ (nie było jeszcze opcji bezpośredniego importu), niestety bezskutecznie... poczekałem trochę i przeniosłem archiwum z GG normalnie przez import w WTW... to coś zmienia?
-
@bugmenot, dopisane do listy próśb, aczkolwiek prośby priorytetowane będą według kolejności zgłaszania.
@mICh@eL aqq najwyraźniej namieszało coś w Twoim archiwum, nie jestem pewien co dokładnie i jakim sposobem ten błąd przeszedł dalej do archiwum wtw. Chyba jedyne, co możesz zrobić to usunąć wszystko, co uważasz za prywatne, uważając, żeby nie usunąć czynnika powodującego błąd i wysłać mi okrojone archiwum.
-
PW posłane, mam nadzieję, że to pomoże ;)
Próbowałem eksportu rozmowy do html lub xml - niby jest import archiwum konekta XML, ale niestety nie działa na same rozmowy :(
-
Niestety, problem jest gdzieś w treści wiadomości, więc puste archiwum nic nie da. Możesz albo próbować usuwać kolejne rozmowy, aż zacznie działać, wtedy przywrócić kopię, usuń to, co usunąłeś ostatnie i sprawdzić, czy wtedy się zaimportuje dobrze. Ewentualnie w drugą stronę, usuwaj wszystko, żeby zostawić tylko tę rozmowę/wiadomość, która wywołuje błąd i wyślij to mi.
-
Może prościej będzie, jak powiesz które rekordy z tablic poprzenosić, zrobię to ręcznie, o ile się da ;)
To tylko kilkanaście rozmów z tygodnia :P
Jak dam jako pierwsze to puste archiwum, a potem daję te dwa do połączenia, to wywala się program:
Nazwa zdarzenia problemu: BEX
Nazwa aplikacji: wtwArchMerger.exe
Wersja aplikacji: 0.0.0.0
Sygnatura czasowa aplikacji: 4d458136
Nazwa modułu z błędem: MSVCR100.dll
Wersja modułu z błędem: 10.0.20327.1
Sygnatura czasowa modułu z błędem: 49cc9257
Przesunięcie wyjątku: 00081e55
Kod wyjątku: c0000417
Dane wyjątku: 00000000
Wersja systemu operacyjnego: 6.1.7600.2.0.0.256.1
-
Tak wiem, coś się wysypuje przy pustym archiwum. Ręcznie tego nie zrobisz, za dużo tego jest. Spróbuj np. założyć nowy profil z nowym archiwum i do niego importować rozmowy. Jeśli archiwum jest małe możesz próbować kolejno usuwać wszystkie kontakty oprócz jednego, i kolejno importować takie archiwum z pojedynczym kontaktem. Eksperymentuj, bo ja już nie mam pomysłów.
-
Ręcznie tego nie zrobisz, za dużo tego jest
To tylko kilkanaście rozmów, 99% archiwum jest takie samo... na prawdę tak dużo z tym zachodu?
Bo widzę, że są dwie tablice - w jednym informacje o rozmowach, a w drugiej same wiadomości z przypisanymi id rozmów... wystarczy to odpowiednio przenieść i zmienić ID rozmów, żeby nie nadpisywały się ?? :)
-
Zmienić index_id w dwóch tabelach, w wtw_chat_index dla każdej rozmowy nowe index_id, i potem te same index_id dla każdej wiadomości należącej do tej rozmowy w wtw_chat_data.
-
Ok, postaram sobie to zrobić ;)
Jakiś prog to zabawy z sqlite możesz polecić? Bo MySQL w PMA mam opanowany jako tako, ale tych baz nie czyta... tak żeby można było łatwo wyeksportować rekordy i z pliku dodać nowe rekordy ;)
-
Ten program, który Ci poleciłem wcześniej może zarówno edytować, jak i eksportować do/importować z pliku.
-
Zrobiłem SQLite Manager z FF - chat_id o 100 000 powiększyłem, index_id o 10 000, nie chciało mi się bawić w szukanie maxa :P
Wszystko już działa, wiadomości są, data, autorzy, wszystko się zgadza :)
Dzięki bardzo za pomoc ;)
-
-
Spróbuję to zbadać
-
-
Hmm, sam tego nie doświadczyłem, bo nie używam ani blipa ani tlena, ale jak będę miał trochę więcej czasu (ostatnio z tym u mnie kiepsko) spróbuję to poprawić.
-
-
Taki ślepy strzał, że chyba małpa powoduje jakieś błędy w zapytaniu sql. Problem w tym, że rozleniwiłem się w ostatnim czasie.
-
niestety nie rozwiązuje to problemów z szyfrowanymi archiwami - przydałby się natywny importer do wtw, który byłby w stanie odczytać niezaszyfrowane archiwum i dołączyć do szyfrowanego.
-
Mam ten sam problem co koledzy - archiwum z rozmowami tlenowymi nie chce się scalić, wyskakuje komunikat "near "@tlen": syntax errorcallback requested query abortkoniec". Czy jest jakaś szansa by w najbliższej przyszłości ta usterka została naprawiona?
-
Byłaby szansa na dodanie importu archiwum z Pidgina?
-
rowniez prosze o import archiwum z pidgina.
-
Witam. Ja także używałem dotychczas pidgina i bardzo by mi zależało na imporcie z tego programu.
-
Nie wiem czy temat jeszcze żyje, a koniecznie potrzebuje scalić dwa archiwa z wtw, niestety wywala mi błąd, co robić?
Kopia zapasowa utworzona.
archiwum pomyslnie otwarte.
database.sq3:
WTW
tyle wyskakuje i wylacza sie
-
Jak tam z tą sprawą? Jeśli mnie oczy nie mylą, w standardzie nie ma scalania archiwów WTW, a ten program niestety nie działa. Istnieje jakaś metoda, aby połączyć archiwa? Ręczne mieszanie w bazie danych skończyło się stratą całego dnia.
-
Podbije zapytanie o Pidgina.
Czy jest szansa ogarnięcia archiwów rozmowy i wyeksportowania ich do WTW (protokół z GG)?