Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Konwersja nVault -> MySQL


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
26 odpowiedzi w tym temacie

#1 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 07.07.2009 14:37

*
Popularny

Szeroko zakrojone pojęcie spamu dosięgło mojego GG i PW, więc postanowiłem opisać sposób konwersji vNault -> MySQL. Konwersja jest szczególnie ważna przy wszelkiego typu modach, które oferują dwa rodzaje zapisu, a my z nieznanego powodu wybraliśmy akurat vNault.

I. Wstęp
Poziom trudności: średni+
Wymagane programy
- Mozilla Firefox - http://www.mozilla-e...org/pl/firefox/
- Wtyczka SQLite Manager - https://addons.mozil...efox/addon/5817
- Jakiś edytor tekstu, ja działałem na Notepad++ który polecam - http://notepad-plus....net/uk/site.htm

Konwersja w poradniku zostanie opisana na pliku vNault z serwera z modem War3FT, choć wszędzie wygląda ona podobnie.

II. Wyciąganie bazy z zakodowanego pliku
Każdy kto próbował wyedytować plik vNault w zwykłym edytorze tekstu wie iż nie zobaczy nic prócz całej masy krzaczków:
Dołączona grafika

Plik ten jest tworzony przy wykorzystaniu SQLite 3, system ten zabezpiecza plik przed wścibskimi to raz, a dwa znacznie ogranicza jego wagę, dla przykładu plik vNault warzący 0,5mb, w wersji MySQL może osiągnąć nawet 1,5mb. Jednym z powodów takiej różnicy jest usunięcie wszystkich tabel które są zupełnie zbędne jeśli chodzi o zapis do pliku.

Żeby zobaczyć odpowiedni kod należy posłużyć się kilkoma sztuczkami, instalujemy program MozillaFirefox, a następnie doinstalowujemy wtyczkę SQLite Manager. Następnie wchodzimy odpowiednio w zakładkę Narzędzia i otwieramy okno wtyczki:
Dołączona grafika

Naszym oczom ukarze się okno programu w którym od tej pory będziemy pracować, wskazujemy plik z bazą danych którą chcemy wyedytować:
Dołączona grafika

Po otworzeniu ukarze się nam struktura pliku i prawie idealna składnia zapytań które musimy wydać, wybieramy z menu po lewej stronie którąś z tabel, ja jako przykład wybiorę wc3_player
Dołączona grafika

Jak widać na screenie program daje nam możliwość bezpośredniej edycji rekordów, usuwanie obecnych, edycji, czy dodania nowych, nas jednak interesuje przycisk Export
Wybieramy odpowiednio zakładkę SQL -> Zaznaczamy obie dostępne opcje -> Klikamy przycisk OK.
Dołączona grafika
Ukarze nam się okno w którym wybieramy gdzie ma być wgrana już prawie gotowa kopia bazy danych (dlaczego prawie, o tym potem), żeby było prosto i żebyśmy nie musieli szukać wybieramy Pulpit i klikamy Zapisz.

III. Poprawa zapytań
Odnajdujemy zapisany plik i otwieramy go w dowolnym edytorze tekstu (w przykładzie użyłem Notepad++
Dołączona grafika
Widzimy już rozkodowaną składnie MySQL, 90% prac już za nami, jednak żeby poprawnie wgrać taką baze należy ją edytować, zapytanie niestety są źle wydane, stąd błąd który będzie pojawiał się przy imporcie w PhpMyAdminie.

Zacznijmy od zapytania które odpowiada za usunięcie tabeli (jeśli istnieje) i utworzenie nowej.
DROP TABLE IF EXISTS "wc3_player";
CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY AUTOINCREMENT, `player_steamid` varchar(25) NOT NULL default '', `player_ip` varchar(20) NOT NULL default '', `player_name` varchar(35) NOT NULL default '', `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );

Bardziej doświadczeni użytkownicy i Ci którzy mieli styczność z bazami danych na pierwszy rzut oka zauważą błędy w składni, jednak żeby nie było masy pytań "co jest nie tak" zaznaczę błędne elementy

DROP TABLE IF EXISTS "wc3_player";

W tej lini wystarczy usunąć znaki ", tak aby zapytanie wyglądało następująco:

DROP TABLE IF EXISTS wc3_player;


W kolejnej lini:

CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY AUTOINCREMENT, `player_steamid` varchar(25) NOT NULL default '', `player_ip` varchar(20) NOT NULL default '', `player_name` varchar(35) NOT NULL default '', `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );

Na zielono zaznaczony jest błąd składni, zaznaczony tekst należy zamienić na auto_increment
Zaznaczone na czerwono zapytania należy usunąć, bowiem parametr default trzeba czymś zapełnić, w naszym przypadku jest to zbędne. Poprawne zapytanie wygląda tak:
CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY auto_increment, `player_steamid` varchar(25) NOT NULL, `player_ip` varchar(20) NOT NULL, `player_name` varchar(35) NOT NULL, `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );

Myślę że większego problemu z edycją kodu w/w zapytań nie będzie, więcej zabawy może być z edycją zapytań rekordów. Niestety wyeksportowane rekordy są źle sformułowane, brakuje w nich odpowiednio zdefiniowanych pól, stąd błąd przy imporcie. Podstawową kwestią jest wyciągnięcie z zapytania tworzącego tabele nazw pól, które musimy osadzić w zapytaniu. Na przykładzie zaznaczyłem pola na kolor zielony:

CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY auto_increment, `player_steamid` varchar(25) NOT NULL, `player_ip` varchar(20) NOT NULL, `player_name` varchar(35) NOT NULL, `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );


Skoro mamy już nazwy tabel zajmijmy się edycja rekordów, świeżo rozkodowana baza wygląda mniej więcej tak:
INSERT INTO "wc3_player" VALUES(1,'','','Portek',07.07.2009);
Brakuje w niej tak jak pisałem wcześniej zdefiniowanych pól do których maja być dodane dane, poprawiamy więc odpowiednio kod:

INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`)VALUES(1,'','','Portek',07.07.2009);

Na pierwszy rzut oka widać co zostało dodane, "wc3_player" zostało zamienione na 'wc3_player', oraz dodane zostały nazwy pól (UWAGA! Ważne żeby nazwy pól były podawane między znakami 'a', oraz było w dokładnie takiej samej kolejności jak w zapytanie tworzącym tabele!).
Nie pozostało nam nic innego jak edycja wszystkich zapytań, ręczna edycja wszystkiego mija się z celem, komu chciało by się to wszystko wstawiać, posłużymy się więc opcją "Zamień". Edytujemy odpowiednio pierwszą linijkę, zaznaczamy stary kod który musimy zamienić, naciskamy klawisze CTRL+H, w pierwszym polu powinien pojawić się stary kod, następnie klikamy na pole poniżej, oraz zaznaczamy wyedytowaną i poprawna już część kodu, ukarze się ona w polu poniżej. Nie pozostaje już nic innego jak kliknąć przycisk Zamień wszystkie
Dołączona grafika

Wyedytowany cały kod, który można poprawnie i bez problemów importować do bazy danych wygląda tak:
DROP TABLE IF EXISTS wc3_player;
CREATE TABLE `wc3_player` ( `player_id` INTEGER PRIMARY KEY auto_increment, `player_steamid` varchar(25) NOT NULL, `player_ip` varchar(20) NOT NULL, `player_name` varchar(35) NOT NULL, `time` timestamp(14) NOT NULL DEFAULT CURRENT_TIMESTAMP );
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`)VALUES(1,'','','Portek',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(2,'','','Portek2',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(3,'','','Portek3',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(4,'','','Portek4',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(5,'','','Portek5',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(6,'','','Portek6',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(7,'','','Portek7',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(8,'','','Portek8',07.07.2009);
INSERT INTO `wc3_player` (`player_id` ,`player_steamid` ,`player_ip` ,`player_name` ,`time`) VALUES(9,'','','Portek9',07.07.2009);

Poradnik uważam za skończony, nie należy on do łatwiejszych bo i cała operacja nie jest łatwa. Wymagana jest znajomość struktury baz danych, zapytań SQL. W razie problemów proszę o kontakt w tym temacie lub poprzez Prywatną Wiadomość, będę pomagał :-)

Poradnik wykonany dla www.amxx.pl
Copyright � 2009 Portek. Kopiowanie zabronione.

Mówi o tym USTAWA ART.16
  • +
  • -
  • 22

serwer-1.png
IP: ts3.cserwerek.pl


#2 Beeze

    Zaawansowany

  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:77
  • GG:
  • Lokalizacja:Szczecin
Offline

Napisano 07.07.2009 14:42

Dobra robota 10/10

PS. Przydało by się podkleić ;)
  • +
  • -
  • 0

#3 L0rdS^P0l4K

    Profesjonalista

  • Użytkownik

Reputacja: 117
Zaawansowany

  • Postów:197
  • GG:
  • Steam:steam
  • Imię:Denis
  • Lokalizacja:Tarnowskie Góry
Offline

Napisano 07.07.2009 14:54

Dzięki serdeczne za poradnik na pewno się przyda :-)
Zaraz lecę go testować... jakbym tylko mógł dać POMÓGŁ to na pewno bym to zrobił xD


[Edit by denis13wroc]
:/ takie sobie nadzieje robiłem... :/ Na pewno przyda się do w3ft jednak ja chciałem coś takiego do pokemoda w którym dane są zapisywane do pm_save.vault nie wiem co to jest za rodzaj bazy... chyba Oracle...
  • +
  • -
  • 0

#4 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 07.07.2009 15:46

A co jeżeli plugin zapewnia tylko wsparcie dla Vault'a ? :P
Jak będzie ci się nudziło to możesz się za to zabrać(jak edytować .sma) i będzie można uznać że poradnik jest kompletny. ;)
  • +
  • -
  • 0

#5 Portek

    Kończymy zabawę, permanentna emerytura!

  • Autor tematu
  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 07.07.2009 15:50

A co jeżeli plugin zapewnia tylko wsparcie dla Vault'a ? :P

To mamy problem ^^

Jak będzie ci się nudziło to możesz się za to zabrać(jak edytować .sma) i będzie można uznać że poradnik jest kompletny. ;)

Skrypter ze mnie początkujący ale czemu nie, tylko że ze znanych mi modów wszystkie oferują zapis vNault/MySQL ;P
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#6 Change

    Super Hero

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:1 161
  • Lokalizacja:Konin
Offline

Napisano 07.07.2009 16:12

Łoo no to przyczyniłem się do pomysłu tak? :] Brawo :P
  • +
  • -
  • 0

#7 byCZUS

    Listonosz

  • Support Team

Reputacja: 752
Guru

  • Postów:459
  • GG:
  • Steam:steam
  • Lokalizacja:GW
Offline

Napisano 24.11.2009 19:46

A jak zamienic z pliku vault a nie sqlite na sql ? przykladowa zawartosc pliku znajduje sie w zalaczniku

Załączone pliki


  • +
  • -
  • 0

#8 Portek

    Kończymy zabawę, permanentna emerytura!

  • Autor tematu
  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 24.11.2009 19:52

A jak zamienic z pliku vault a nie sqlite na sql ? przykladowa zawartosc pliku znajduje sie w zalaczniku

vault = sqlite3 - odpowiedź: tak samo.

Brak załącznika ;>
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#9 byCZUS

    Listonosz

  • Support Team

Reputacja: 752
Guru

  • Postów:459
  • GG:
  • Steam:steam
  • Lokalizacja:GW
Offline

Napisano 24.11.2009 20:25

Zalacznik jest wyzej ;P
juz dodany
  • +
  • -
  • 0

Dziękuje, dobranoc.


#10 honey

    Wszechmogący

  • Zbanowany

Reputacja: 124
Zaawansowany

  • Postów:606
  • Steam:steam
  • Lokalizacja:n / a
Offline

Napisano 24.11.2009 22:20

Przydatne, faktycznie można by przykleić ten temat.

#11 Seba

    Wszechobecny

  • Zbanowany

Reputacja: 198
Profesjonalista

  • Postów:424
  • Lokalizacja:Internet
Offline

Napisano 25.11.2009 10:18

Specem to Ty nie zostaniesz raczej.

#12 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 19.05.2010 21:10

Stworzyłem alternatywę dla punktu III. mianowicie skrypt w PHP, który za nas dokona poprawek :)

Skrypt napisałem z użyciem wyrażeń regularnych, jeśli ktoś chce przerabiać to proszę zachować przynajmniej w stopce adnotację o autorze pierwowzoru :) W tworzeniu kierowałem się listą poprawek z podpunktu III.

Niestety, nie mam gdzie tego zahostować (nie chcę robić reklamy swojej sieci serwerów, a darmowe hostingi są zbyt niepewne ;]) także prosiłbym jakiegoś uczynnego moderatora o zahostowanie pliczku do użytku publicznego i podanie linka w pierwszym poście :) byłbym wdzięczny.
Załączony plik  vault.php   2,69 KB  269 Ilość pobrań


Instrukcja obsługi: Skrypt (umieszczony na hostingu z obsługą PHP, może być apache na localhost) uruchamiamy w przeglądarce, wskazujemy miejsce przechowywania naszego pliku sql i dajemy wyślij plik. Po chwili powinno nam się pokazać okienko z pytaniem czy (i ewentualnie gdzie) zapisać nowy, poprawiony plik sql.

Mam nadzieję, że się przyda :)

Użytkownik GwynBleidD edytował ten post 19.05.2010 21:10

  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#13 Kubaczek <3

    Zaawansowany

  • Użytkownik

Reputacja: 17
Początkujący

  • Postów:116
  • Steam:steam
  • Lokalizacja::)
Offline

Napisano 20.05.2010 18:54

Mam problem :/ mam plik, odpalam go i nic się nie pokazuje. Co jest?
  • +
  • -
  • 0

#14 hardbot

    Banned

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:3 049
Offline

Napisano 20.05.2010 20:29

Który plik masz ? ten vault.php ??

#15 Kubaczek <3

    Zaawansowany

  • Użytkownik

Reputacja: 17
Początkujący

  • Postów:116
  • Steam:steam
  • Lokalizacja::)
Offline

Napisano 20.05.2010 20:32

... Wiadomo ze odpalenie skryptu w php nie pojdzie bez apache i parsera PHP. Chyba normalne, że próbóję otworzyć plik o rozszerzeniu *.vault Chodzi o pkt.2

Użytkownik kubaku4 edytował ten post 20.05.2010 20:32

  • +
  • -
  • 0

#16 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 21.05.2010 15:38

Rozumiem, że próbujesz odpalić plik w moim skrypcie, tak? Niestety nie służy on do bezpośredniej konwersji z vault na MySQL. Zastępuje on tylko III. etap konwersji opisany w pierwszym poście.

Jeśli chodzi Ci o odpalenie wtyczką do FireFox, to spróbuj zmienić rozszerzenie na .db albo .sql, nie wiem jak ta wtyczka działa, gdyż nigdy jej nie używałem, ale może da to jakiś efekt.
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#17 Kubaczek <3

    Zaawansowany

  • Użytkownik

Reputacja: 17
Początkujący

  • Postów:116
  • Steam:steam
  • Lokalizacja::)
Offline

Napisano 21.05.2010 19:45

Zmieniałem już rozszerzenia na wyzej podane oraz *.sqlite, sql3, itd. Ale nadal jest napisane "Database Not Selected"
  • +
  • -
  • 0

#18 Lunatic

    Zaawansowany

  • Użytkownik

Reputacja: 43
Pomocny

  • Postów:142
  • Lokalizacja:Olsztyn
Offline

Napisano 16.10.2010 23:55

Nie rozumiem tego. Ściągnąłem potrzebne rzeczy i utykam na punkcie II. Mam plik ZM.vault i co dalej??
  • +
  • -
  • 0

#19 Na 5tyk

    Godlike

  • Użytkownik

Reputacja: 430
Wszechobecny

  • Postów:1 712
  • GG:
  • Imię:Patryk
  • Lokalizacja:PL
Offline

Napisano 04.07.2011 13:31

wskazujemy plik z bazą danych którą chcemy wyedytować

Tego nie rozumiem :F skoro mam zrobić nVault -> MySQL to dlaczego od razu mam brać bazę danych?
  • +
  • -
  • 0

#20 Na 5tyk

    Godlike

  • Użytkownik

Reputacja: 430
Wszechobecny

  • Postów:1 712
  • GG:
  • Imię:Patryk
  • Lokalizacja:PL
Offline

Napisano 05.07.2011 15:14

Jaki kod mam skopiować. Z jakiego pliku?
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych