Webmaster Forumu

Geri git   Webmaster Forumu > Webmaster Kaynak Eğitim Tanıtım Hizmet > MySQL Veritabanı SQL

MySQL Veritabanı SQL SQL MySQL Access MSSQL Oracle Veritabani Database

Cevapla
 
LinkBack Seçenekler Stil
  #1 (permalink)   iTrader 
Alt 2006-09-13, 11:37
Member
 
Üyelik tarihi: Feb 2005
Mesajlar: 155
Tecrübe Puanı: 3
iTrader: %0/0
qwerty is on a distinguished road
Standart MSSQL'den Çoklu Kayıt Silme Nasıl Yapılır.

MSSQL Server'da 70000 kayıttan oluşan yabancı sarki sözü arşivimden bitişik (satır satır olmayan) şarkı sözlerini aşağıdaki kodla silmek istedim. server timeout mesajı verdi. Kod da bir hata mı yaptım bilemiyorum yardımcı olabilecek arkadaşa teşekkürler....

<!--#INCLUDE FILE="baglan.asp"-->
<%

set xs=NC.Execute("Select * from yabanci where (id >1 and id < 70000) ")

Do While Not xs.EOF

id=xs("id")

soz=xs ("sarki_sozu")
soz1=soz
soz=Replace (soz,chr(13),"<br/>")

if soz=soz1 and id<>Empty then
set xs = NC.Execute ("DELETE yabanci where id='"&id&"'")
end if

xs.Movenext

Loop

nc.close
set nc=nothing

%>

Konu qwerty tarafından (2006-09-13 Saat 12:01 ) değiştirilmiştir.. Sebep: düzenleme
Alıntı ile Cevapla

  #2 (permalink)   iTrader 
Alt 2006-09-13, 12:02
Mp3Powers.Com - ait Kullanıcı Resmi (Avatar)
Member
 
Üyelik tarihi: Apr 2005
Mesajlar: 129
Tecrübe Puanı: 3
iTrader: %0/0
Mp3Powers.Com is on a distinguished road
Standart

gerekmeyen kodlar kullanmışsın, silmek istiyorum demişsin fakat replace falan ettiriyosun ayrıca if soz=soz1 and id<>Empty then satırında id nin neden boş olup olmadığını kontrol ettiriyorsun anlamadım, sonuçta id de bir değer mutlaka vardır kayıt girildiğine göre.Aşağıdaki kod seninkine göre biraz daha iyi, denemende fayda var

'// Eğer sözün içinde </br> karakteri yoksa sil

<!--#INCLUDE FILE="baglan.asp"-->
<%
set xs=NC.Execute("Select * from yabanci")
For i = 1 to 7000
soz=xs("sarki_sozu")
no=xs("id")
if InStr(soz,"</br>") = 0 Then
set sil = NC.Execute ("DELETE From yabanci where id="&no&"")
Else
xs.Movenext:Next
End if

xc.close:set xs=nothing
nc.close:set nc=nothing

%>
__________________
just coder

Konu Mp3Powers.Com tarafından (2006-09-13 Saat 12:05 ) değiştirilmiştir..
Alıntı ile Cevapla

  #3 (permalink)   iTrader 
Alt 2006-09-13, 12:16
Member
 
Üyelik tarihi: Feb 2005
Mesajlar: 155
Tecrübe Puanı: 3
iTrader: %0/0
qwerty is on a distinguished road
Standart

Teşekkür ediyorum. Haklısın ilk bölümde zaten değer var InStr kullanmak gerekirdi. Senin verdiğin koda göre çalıştırdım şöyle bir hata aldım.

Microsoft VBScript compilation error '800a041f'

Unexpected 'Next'

/delete900.asp, line 19

xs.Movenext:Next
------------^
Alıntı ile Cevapla

  #4 (permalink)   iTrader 
Alt 2006-09-13, 14:06
TRinsanRehberi - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: Aug 2005
Mesajlar: 1.217
Tecrübe Puanı: 4
iTrader: %100/10
TRinsanRehberi is on a distinguished road
Standart

delete from yabanci where sarki_sozu not like '%<br/>%'

bu sql direk dene
ama sana tavsiyem bunu gerçek database de yapma (kendi çalışma ortamında yap)

kolay gelsin

<br/> ifadesini <br> yada bir başka türlü yazabilirsin bu senin veri tabanında <br> lerin nasıl olduğuna bağlı
__________________
Hayat birgün biter; yapacak birşeyler hep kalır.
Alıntı ile Cevapla

  #5 (permalink)   iTrader 
Alt 2006-09-14, 09:18
Member
 
Üyelik tarihi: Feb 2005
Mesajlar: 155
Tecrübe Puanı: 3
iTrader: %0/0
qwerty is on a distinguished road
Standart

Son değişikliklerden sonra kod aşağıdaki gibi oldu. Test etmek için sadece 20 kayıt silmek istedim. Yine "Timeout" hatası verdi.

Hatanın oluştuğu satır : set xs = nc.Execute("delete from yabanci where sarki_sozu not like '%<br/>%' ")


Kod

<!--#INCLUDE FILE="baglan.asp"-->
<%

set xs=nc.Execute("Select * from yabanci where (id >69975 and id < 70000) ")

For i = 1 to 20

set xs = nc.Execute("delete from yabanci where sarki_sozu not like '%<br/>%'")

xs.Movenext
Next

Response.Write("Kayıtlar Silindi")

xs.close:set xs=nothing
nc.close:set nc=nothing

%>



Hata Mesajı

Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

[Microsoft][ODBC SQL Server Driver]Timeout expired

/delete901.asp, line 8

Konu qwerty tarafından (2006-09-14 Saat 09:23 ) değiştirilmiştir.. Sebep: ilave bilgi
Alıntı ile Cevapla

  #6 (permalink)   iTrader 
Alt 2006-09-14, 10:05
TRinsanRehberi - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: Aug 2005
Mesajlar: 1.217
Tecrübe Puanı: 4
iTrader: %100/10
TRinsanRehberi is on a distinguished road
Standart

<!--#INCLUDE FILE="baglan.asp"-->
<%
baslangic = Request.QueryString("sayac")

bitis = baslangic + 10

set xs = nc.Execute("delete from yabanci where sarki_sozu not like '%<br/>%' and id >"& baslangic &" and id <= "& bitis &"")

%>

<script language="javascript">
window.setTimeout("window.open('toplu_sil.asp?saya c=<%=bitis%>','toplusil','')", 1 * 20000);
</script>

_______________
yukarıdaki kodu aynen çalıştır bakalım
1 * 20000 <<< ikinci kez sayfanın ne kadar süre sonra çalışacağını belirler.
bitis = baslangic + 10 <<< bir seferde kaç kayıt silineceğini belirler buradaki 10 değeri arttırılırsa bir seferde silinecek kayıt artar.
haa bu arada buradaki toplu_sil.asp yukarıdaki kodu yazdığın sayfanın adıdır.
__________________
Hayat birgün biter; yapacak birşeyler hep kalır.

Konu TRinsanRehberi tarafından (2006-09-15 Saat 06:10 ) değiştirilmiştir..
Alıntı ile Cevapla

  #7 (permalink)   iTrader 
Alt 2006-09-14, 11:28
Member
 
Üyelik tarihi: Feb 2005
Mesajlar: 155
Tecrübe Puanı: 3
iTrader: %0/0
qwerty is on a distinguished road
Standart

Aynen yazdığın gibi çalıştırdım. Aşağıdaki hata mesajını aldım.



Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

[Microsoft][ODBC SQL Server Driver]Timeout expired

/delete902.asp, line 4



4 nolu satır : set xs = nc.Execute("delete from yabanci where sarki_sozu not like '%<br/>%'")
Alıntı ile Cevapla

  #8 (permalink)   iTrader 
Alt 2006-09-14, 11:31
TRinsanRehberi - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: Aug 2005
Mesajlar: 1.217
Tecrübe Puanı: 4
iTrader: %100/10
TRinsanRehberi is on a distinguished road
Standart

tablodaki sarki_sozu alanına bir indeks tanımla
__________________
Hayat birgün biter; yapacak birşeyler hep kalır.
Alıntı ile Cevapla

  #9 (permalink)   iTrader 
Alt 2006-09-14, 11:38
Member
 
Üyelik tarihi: Feb 2005
Mesajlar: 155
Tecrübe Puanı: 3
iTrader: %0/0
qwerty is on a distinguished road
Standart

Enterprise Manager ile veritabanına erişiyorum. Şuana kadar hiç index tanımlamadım. Kod çalıştırarak tanımlanabilir mi ?
Alıntı ile Cevapla

  #10 (permalink)   iTrader 
Alt 2006-09-14, 11:47
LuGeLaS - ait Kullanıcı Resmi (Avatar)
Senior Member
 
Üyelik tarihi: Jun 2006
Nerden: Türkiye
Mesajlar: 777
Tecrübe Puanı: 2
iTrader: %100/3
LuGeLaS has a spectacular aura aboutLuGeLaS has a spectacular aura about
Standart

Onun yerine şöyle bişey yapabilirsin.

Tabloda x diye bir alan aç türünü bit yap.

Daha sonra x alanın hepsini 0 olarak update et.

Sql sorgusunda set xs=NC.Execute("Select top 50 * from yabanci where x=0")

Daha sonra döngü kur ve işlemi yap bu arada işlem yaptığın kaydın x alanını 1 yap. Bu sorguda 50 kayıt birden gelecektir. Ve 50 kayıtta işlem yaptıktan sonra durur. Sürekli işlem yapması için sayfanın başına bunu ekle
<meta http-equiv="refresh" content="1;url=?">

Bunu ekleyince işlem her bittiğinde sayfa yenilecek ve işlem yapılmayan kayıtlar x alanına göre alınıp işlenecektir.

Ben hep bu yöntemi kullanıyorum. Biraz uzun sürer ama timeout vermez. Verirsede top 50 yeni top 20 - 30 olarak kullanabilirsin
__________________
Evet? - Hayır?
Alıntı ile Cevapla

Cevapla


Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
script nasıl yapılır rosende Güvenlik 0 2006-02-13 22:46
Pro sayac nasıl yapılır nonamez Forumda 2 2006-01-02 05:37
Katalog nasıl yapılır? favorites Webmaster Genel Konular 3 2005-12-24 09:37
forum nasıl yapılır kuaforerol Hazır Uygulamalar Forumlar Paket Programlar 1 2004-12-22 06:41
bu buton nasıl yapılır? seti PHP 1 2003-08-31 17:32


Bütün Zaman Ayarları WEZ +2 olarak düzenlenmiştir. Şu Anki Saat: 05:59 .


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.1.0

Firefox