Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL, MSSQL] Automatyczna komunikacja między bazami
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
Insomiaa
Witam,

Stworzyłem stronkę wyświetlającą dane z bazy MySql... Chciałbym aby pobierała ona interesujące mniee dane z bazy MSSQL (np raz dziennie).
Nie bardzo wiem jak to zrobić..
Widziałem, że są programy umożliwiające konwersje z jednej bazy do drugiej, ale czy jakiś robi to automatycznie nadpisując starą bazę?

Pozdrawiam,
I
wookieb
mysql nie ma takiej możliwości. Wykorzystaj po prostu skrypt php
Insomiaa
a mógł byś podać jakieś linki gdzie można o tym poczytać/znaleźć coś gotowego do przerobienia?
IceManSpy
Możesz to zrobić na zasadzie insert , delete , update i select jeśli chodzi o brazy, oraz ustawić CRONa. Wtedy piszesz sobie jakiś skrypt w PHP, a w CRONie ustawiasz, aby o jakiejś tam porze był ten skrypt wywoływany. Tylko uważaj, bo jeśli będzie za długo trwał to serwer go przerwie! Albo ustaw w opcja na dłuższe działanie skryptu.
Insomiaa
jakiś tutorial/trochę kodu macie...?
bo ja nadal do końca nie wiem jak to przenosić...
prachwal
najszybsza metoda jest do zrobienia ale pod windosem
robisz eksport danych za pomocą BCP.exe do pliku, przesyłasz taki plik FTP-em na maszynę z MySQL-em, a następnie ładujesz dane LOAD DATA - działa naprawdę szybko

skrypty PHP przy dużej ilości danych działają makabrycznie wolno
Insomiaa
to jest raptem 200wierszy po 15 kolumn... dane mają się odświeżać codziennie o konkretnej godzinie...
zastanawiałem się, czy nie da się tego w jobs'ach mssql'a zrobić?
vokiel
O ile dobrze pamiętam, to z poziomu bay MSSQL można ustawić replikację, nawet do bazy MySQL'a. Replikacja ma to do siebie, że działa automatycznie, sama w momencie wystąpienia zmian.
prachwal
da się
robisz insert into do tabeli na linked serwerze po odbc - całość w T-SQL-u

linked serwer po ODBC do MySQL-a
Insomiaa
jak to zrobićtongue.gif?
gdzie ta opcja jest i we wszystkich wersjach ms sql?
prachwal
  1. EXEC master.dbo.sp_addlinkedserver
  2. @server = N'MYSQL',
  3. @srvproduct=N'MySQL',
  4. @provider=N'MSDASQL',
  5. @provstr=N'Driver=MySQL ODBC 5.1 Driver;SERVER=localhost;UID=root;PWD=xxxx;DATABASE=test;PORT=3306;CHARSET=utf8'
  6.  
  7. -- importowanie danych do testu, bo potrzebuję tabelki na wzór
  8. SELECT *
  9. INTO tab_import
  10. FROM openquery (MYSQL,'select * from test.tab_import') AS r
  11.  
  12. -- załadowanie danych do tabeli na maszynie z MySQL
  13. INSERT INTO openquery (MYSQL,'select * from test.tab_import where 1 = 0')
  14. (O1, L1, O2, L2, O3, L3, O4, L4, O5, L5)
  15. SELECT O1, L1, O2, L2, O3, L3, O4, L4, O5, L5
  16. FROM tab_import AS tab_import_1
Insomiaa
sorry zadam jeszcze głupie pytanie i gdzie ja to mam dodać? bo z ms sqla jestem słaby

to co Ty napisałeś to przeniesienie mysql do mssql
prachwal
w zasadzie działa w obie strony, tyle że z poziomu MSSQL-a
Insomiaa
okazało się to dość proste, teraz mam kolejny problem

z managment mssql chce wysłać hasło shashowane:
insert into [dane tabeli mysql] values(uzytkownik, HashBytes('SHA1', 'haslo'), id);
HashBytes to odpowiednik sha1()... ale niestety w mysql hasła wyglądają dziwnie...

Jak to pokonać? Jak z Mssql'a utworzyć w mysql zakodowane hasło... moze innego kodowania użyć np md5?
prachwal
musisz przekonwertować wynik funkcji HashBytes do tekstu, standardowo dane są binarne
przykład
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.