• 29-06-2008, 23:13:22
    #1
    Merhaba arkadaşlar bazı sorunlar olmuştu sitemin yedeğini kaybetmiştim çok eski yedeğini kurmuştum şimdi eski hostcu bir iyilik yapıp yedeğimi yolladıda bu 2 sql dosyasını birleştirmek mümkün mü yada 2 sini aynı anda bigdump.php ile yüklesem olur mu?
  • 29-06-2008, 23:33:42
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Olmas çakışma yapar düzgün bir şekilde çalışmaz.
    Senin için en iyi olan sql dosyasını dump et
  • 29-06-2008, 23:34:32
    #3
    Makale tespara' ya aittir.

    Veritabanı (dB) birleştirme

    Bu konuda vbulletine ait iki ayrı dB(veritabanı) birleştirme anlatılacaktır.Bu işlem için taşınacak olan db kaynak , diğeri hedef db dir.ve işlemlerin kolaylığı açısından kaynak db daha az kapasiteli olan db olursa hem hata yapma olasılığı azalır hemde karmaşadan uzak durmuş oluruz (hemde zamandan tasarruf etmiş oluruz)

    icraata geçmeden önce konuyu baştan sona okuyun.

    Kaynak db forumx ve hedef db forum olduğunu varsayın (karmaşayı önelemek için aşağıdaki resime bakabilirsiniz.). iki db arasında en kolay user tablosu taşınır. çünkü bu tablonun bağımlı olduğu hiç bir tablo yoktur.




    Uyarılar :

    1. localhost kullanıcı adı root şifresi 123 olduğunu varsayıyorum (siz kendi şifrenizi gireceksiniz)
    2. Bu işlemi kendi bilgisayarım üzerinde yaptım. (Sunucuda tavsiye etmem)
    3. İşlem görecek veritabanlarının hangi vbulletin sürümlerine ait olduğu önemli değildir.
    4. Konuda geçen SQL sorguları konsol üzerinden çalıştırılmıştır(PMA danda çalıştırılabilir)
    5. Her iki db nin de aynı sunucuda yüklü olduğunu var sayıyorum.( db yükleme konusu için buraya bakınız )
    6. İlk örnek olarak user tablsounun taşınması anlatılacaktır
    1- ilk adım olarak hedef db içindeki en büyük userid numarasını bulmalıyız. bunun için aşağıdaki sorguyu çalıştırın.

    SELECT MAX( userid ) FROM user;
    userid numarasını belirleyici unsur olarak alma sebebimiz user tablosunda PRİMARY KEY olmasıdır

    Bulunan bu sonuç kaynak db deki artma miktarını gösterir
    (Bendeki değer 21833)



    2- ikinci adım olarak kaynak db içindeki tüm userid numaralarını artma miktarı kadar artırmak, bunun için aşağıdaki sorguyu çalıştırın

    UPDATE user SET userid=userid+21833 WHERE userid > 0 ;
    bunun sonucu olarak userid çakışmasını engellemiş olduk(Artık her iki db de aynı userid numarasına sahip olan kullanıcılar olamaz)

    3- üçüncü adım olarak ilgil tabloyu (user) yedeklemek.BU yedekleme işlemine bazı mySQL komutlar dahil edilmeyecektir bunun için mutlaka aşağıdkai komutu kullanın

    mysqldump -u root -p123 --skip-opt -Q -e -x -f -c -K -t forumx user > c:\user.sql
    ilgili tabloyu C: sürücüsüne içine user.sql olarak yedeklemiş olduk

    4- Dördüncü adım olarak user.sql yedeğini hedef db içine aktaracağız. (Aynı sunucu içinde yedekleme ve geri yükleme işilemi yapılacağı için karkater seti tanımlaması yapmadım.)

    Aşağıdaki komutu kullanarak yedeği yükleyin (detaylı bilgi için buraya bakınız)

    mysql -u root -p123 -f  forum < c:\user.sql
    5- userid çakışmasını artma miktarı ile önledik peki username çakışmasını nasıl önlayeceğiz?. Bunun için aşağıdaki sorguyu çalıştırarak çift kayıtları (duplicate entry ) ekrana yazdıracağız

    SELECT username , userid 
    FROM user 
    WHERE username IN(
        SELECT username 
        FROM user 
        GROUP BY username 
        HAVING COUNT(*) > 1
        ) 
    ORDER BY username ;
    ve userid numarası artma miktarından (21833) büyük olan kayıtları sileceğiz (veya tam tersi ) Bu sorgudan sonra aşağıdaki gbi bir çıktı ile karşılaşacaksınız. Buradan istediğiniz çift kayıttan birini silin .

    +-----------+--------+
    | username  | userid |
    +-----------+--------+
    | abuzer    |  22209 |
    | abuzer    |   6381 |
    | alex      |   6210 |
    | alex      |  21975 |
    | ali       |   3757 |
    | ali       |  22262 |
    | asdasd    |  22494 |
    | asdasd    |   5827 |
    | asdfgh    |   7517 |
    | asdfgh    |  22398 |
    | Black     |  21863 |
    | black     |   6105 |
    | bulut     |  22412 |
    | bulut     |   3472 |
    | canavar   |   4990 |
    | canavar   |  22265 |
    | conqueror |  22111 |
    | conqueror |   3601 |
    | emre      |  21875 |
    | emre      |   3731 |
    | erdem     |  22394 |
    | erdem     |   5103 |
    | erkan     |   6452 |
    | ERKAN     |  22520 |
    | fatih     |   3853 |
    | fatih     |  22204 |
    | FEARLESS  |  22480 |
    | FeArLesS  |  21594 |
    | gencfb    |   6638 |
    | gencfb    |  22202 |
    | hakan     |   4000 |
    | hakan     |  22029 |
    | HSYN      |  22374 |
    | hsyn      |   4907 |
    | kamer     |  22250 |
    | kamer     |  21500 |
    | kanka     |   3969 |
    | kanka     |  22094 |
    | kaya      |  22271 |
    | kaya      |   5413 |
    | leon      |   5548 |
    | leon      |  22173 |
    | mert      |  22092 |
    | MERT      |   3436 |
    | Pisiko    |   5529 |
    | pisiko    |  22252 |
    | s2000     |   3999 |
    | s2000     |  22019 |
    | sercan    |  21985 |
    | sercan    |   3417 |
    | serdar    |     22 |
    | serdar    |  22288 |
    | supra     |   3584 |
    | supra     |  21871 |
    | tespara   |  21712 |
    | tespara   |  22538 |
    | veron     |  21504 |
    | veron     |  22008 |
    +-----------+--------+
    mesela userid numarası 22538 olan tespara adlı üyeyi kayıttan çıkarmak için aşağıdaki gibi bir sorgu çalıştırabiliriz

    DELETE FROM user WHERE userid = 22538 ;
  • 30-06-2008, 01:11:58
    #4
    beyzade adlı üyeden alıntı: mesajı görüntüle
    Makale tespara' ya aittir.

    Veritabanı (dB) birleştirme

    Bu konuda vbulletine ait iki ayrı dB(veritabanı) birleştirme anlatılacaktır.Bu işlem için taşınacak olan db kaynak , diğeri hedef db dir.ve işlemlerin kolaylığı açısından kaynak db daha az kapasiteli olan db olursa hem hata yapma olasılığı azalır hemde karmaşadan uzak durmuş oluruz (hemde zamandan tasarruf etmiş oluruz)

    icraata geçmeden önce konuyu baştan sona okuyun.

    Kaynak db forumx ve hedef db forum olduğunu varsayın (karmaşayı önelemek için aşağıdaki resime bakabilirsiniz.). iki db arasında en kolay user tablosu taşınır. çünkü bu tablonun bağımlı olduğu hiç bir tablo yoktur.




    Uyarılar :

    1. localhost kullanıcı adı root şifresi 123 olduğunu varsayıyorum (siz kendi şifrenizi gireceksiniz)
    2. Bu işlemi kendi bilgisayarım üzerinde yaptım. (Sunucuda tavsiye etmem)
    3. İşlem görecek veritabanlarının hangi vbulletin sürümlerine ait olduğu önemli değildir.
    4. Konuda geçen SQL sorguları konsol üzerinden çalıştırılmıştır(PMA danda çalıştırılabilir)
    5. Her iki db nin de aynı sunucuda yüklü olduğunu var sayıyorum.( db yükleme konusu için buraya bakınız )
    6. İlk örnek olarak user tablsounun taşınması anlatılacaktır
    1- ilk adım olarak hedef db içindeki en büyük userid numarasını bulmalıyız. bunun için aşağıdaki sorguyu çalıştırın.

    SELECT MAX( userid ) FROM user;
    userid numarasını belirleyici unsur olarak alma sebebimiz user tablosunda PRİMARY KEY olmasıdır

    Bulunan bu sonuç kaynak db deki artma miktarını gösterir
    (Bendeki değer 21833)



    2- ikinci adım olarak kaynak db içindeki tüm userid numaralarını artma miktarı kadar artırmak, bunun için aşağıdaki sorguyu çalıştırın

    UPDATE user SET userid=userid+21833 WHERE userid > 0 ;
    bunun sonucu olarak userid çakışmasını engellemiş olduk(Artık her iki db de aynı userid numarasına sahip olan kullanıcılar olamaz)

    3- üçüncü adım olarak ilgil tabloyu (user) yedeklemek.BU yedekleme işlemine bazı mySQL komutlar dahil edilmeyecektir bunun için mutlaka aşağıdkai komutu kullanın

    mysqldump -u root -p123 --skip-opt -Q -e -x -f -c -K -t forumx user > c:\user.sql
    ilgili tabloyu C: sürücüsüne içine user.sql olarak yedeklemiş olduk

    4- Dördüncü adım olarak user.sql yedeğini hedef db içine aktaracağız. (Aynı sunucu içinde yedekleme ve geri yükleme işilemi yapılacağı için karkater seti tanımlaması yapmadım.)

    Aşağıdaki komutu kullanarak yedeği yükleyin (detaylı bilgi için buraya bakınız)

    mysql -u root -p123 -f  forum < c:\user.sql
    5- userid çakışmasını artma miktarı ile önledik peki username çakışmasını nasıl önlayeceğiz?. Bunun için aşağıdaki sorguyu çalıştırarak çift kayıtları (duplicate entry ) ekrana yazdıracağız

    SELECT username , userid 
    FROM user 
    WHERE username IN(
        SELECT username 
        FROM user 
        GROUP BY username 
        HAVING COUNT(*) > 1
        ) 
    ORDER BY username ;
    ve userid numarası artma miktarından (21833) büyük olan kayıtları sileceğiz (veya tam tersi ) Bu sorgudan sonra aşağıdaki gbi bir çıktı ile karşılaşacaksınız. Buradan istediğiniz çift kayıttan birini silin .

    +-----------+--------+
    | username  | userid |
    +-----------+--------+
    | abuzer    |  22209 |
    | abuzer    |   6381 |
    | alex      |   6210 |
    | alex      |  21975 |
    | ali       |   3757 |
    | ali       |  22262 |
    | asdasd    |  22494 |
    | asdasd    |   5827 |
    | asdfgh    |   7517 |
    | asdfgh    |  22398 |
    | Black     |  21863 |
    | black     |   6105 |
    | bulut     |  22412 |
    | bulut     |   3472 |
    | canavar   |   4990 |
    | canavar   |  22265 |
    | conqueror |  22111 |
    | conqueror |   3601 |
    | emre      |  21875 |
    | emre      |   3731 |
    | erdem     |  22394 |
    | erdem     |   5103 |
    | erkan     |   6452 |
    | ERKAN     |  22520 |
    | fatih     |   3853 |
    | fatih     |  22204 |
    | FEARLESS  |  22480 |
    | FeArLesS  |  21594 |
    | gencfb    |   6638 |
    | gencfb    |  22202 |
    | hakan     |   4000 |
    | hakan     |  22029 |
    | HSYN      |  22374 |
    | hsyn      |   4907 |
    | kamer     |  22250 |
    | kamer     |  21500 |
    | kanka     |   3969 |
    | kanka     |  22094 |
    | kaya      |  22271 |
    | kaya      |   5413 |
    | leon      |   5548 |
    | leon      |  22173 |
    | mert      |  22092 |
    | MERT      |   3436 |
    | Pisiko    |   5529 |
    | pisiko    |  22252 |
    | s2000     |   3999 |
    | s2000     |  22019 |
    | sercan    |  21985 |
    | sercan    |   3417 |
    | serdar    |     22 |
    | serdar    |  22288 |
    | supra     |   3584 |
    | supra     |  21871 |
    | tespara   |  21712 |
    | tespara   |  22538 |
    | veron     |  21504 |
    | veron     |  22008 |
    +-----------+--------+
    mesela userid numarası 22538 olan tespara adlı üyeyi kayıttan çıkarmak için aşağıdaki gibi bir sorgu çalıştırabiliriz

    DELETE FROM user WHERE userid = 22538 ;

    Çok ama çok teşekkür ederim deniyeceğim çok saol ++++ rep
  • 30-06-2008, 11:50:05
    #5
    Platin üye
    Yukarıdaki yöntem user tablosu için.Diğer tabloları taşımanız,özellikle forumunuz büyük ise tam bir eziyet olacaktır.
  • 11-07-2008, 15:37:39
    #6
    Onurss adlı üyeden alıntı: mesajı görüntüle
    Yukarıdaki yöntem user tablosu için.Diğer tabloları taşımanız,özellikle forumunuz büyük ise tam bir eziyet olacaktır.
    Hayır hiç alakası bile yok . bilmiyorsan bari yanlış yönlendirme.

    Bu iş o diğer konudaki notepad ile kopyala yapıştır yapmaya benzemez . o konuya bakarak yaparsan tabiki eziyet olur hemde sonuç alamassın

    Bu iş vb nin yapısını bilmek ve mysql e hakim olamakla ilgilidir...