Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Sql serverden cliente part part download
#7
(29-09-2018, Saat: 09:35)malitutuncu Adlı Kullanıcıdan Alıntı: Merhaba,

Araştırmalarıma rağmen veritabanı ile bir connection kurup parça parça çekilecek orjinal bir yöntem bulamadım.
Ancak bunu sql tarafı ile hallettim.

İlk adımda:
sql Datalength fonsiyonu ile:

SELECT uzunluk = DATALENGTH(COLUMN_NAME)  FROM  TABLE_NAME;

ilgili verinin uzunluğunu alıyoruz.

İkinci adımda:
Sql tarafında
SUBSTRING( string, start_position, length )
ile parça parça alabiliyoruz. Ancak bize en fazla 64kb lık bir bilgi veriyor.

Örneğin

20mb bir dosyamız olduğunda (20971520byte). 
64kblık(65536byte) parçalar halinde aldığımızda
320 defa veri tabanına gidip gelmemiz gerekiyor.


Yapılan:
1. olarak başta dosya boyutu aldım
2. olarak Dosya boyutu / 327680 ile döngü sayımı hesapladım(327680byte=320kb)
3. olarak Select ifademiniz içerisinde 5 tane substring ile (O dosyanın belirli bir pozisyonundan başlayan ve 64kb+64kb+ 64kb+ 64kb+64kb toplamda 320kb = 0,3mb) veri çeken
ve bunu TMemoryStream'a yazan bir algoritma geliştirdim. ve her döngümün içerisine sleep(10) koydum. 
(Sleep komutu threadlerde hayati değer taşıdığı gibi burada da öyle olduğunu düşünüyorum)

Sonuç:
20mb dosyayı 64 defa veri tabanına giderek. Parça parça alıp TMemoryStreamda topladım daha sonra kaydettim

Bunu SQL tarafında bir fonksiyon, prosedür ile yapmamamın sebebi dinamik olması gerekli fonksiyonum

Function SqlVeriyiParcalayarakGetir(aKolonAdi, aTabloAdi, aWhereSarti : String) : TMemoryStream;
begin

//kod

end;

şeklinde yaptım. Benim çözümüm bu şekilde
Algoritmayı vermememin sebebi bunu kopyalayıp yapıştırmak yerine, buna ihtiyacı olan kişinin de bir araştırma yapması.Belki benden iyi bir çözüm bulur yol gösterir.

Yardımcı olan arkadaşlara teşekkür ediyorum.
Teşekkürler.


Veriyi tek parça halinde elde ettiğinizde bütünlüğünde bir bozulma veya farklılık oluştu mu?
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
WWW
Cevapla


Bu Konudaki Yorumlar
Sql serverden cliente part part download - Yazar: malitutuncu - 27-09-2018, Saat: 19:38
Sql serverden cliente part part download - Yazar: mrmarman - 27-09-2018, Saat: 21:51
Cvp: Sql serverden cliente part part download - Yazar: narkotik - 27-09-2018, Saat: 22:14
Sql serverden cliente part part download - Yazar: malitutuncu - 29-09-2018, Saat: 09:35
Cvp: Sql serverden cliente part part download - Yazar: uparlayan - 02-10-2018, Saat: 14:48
Sql serverden cliente part part download - Yazar: narkotik - 29-09-2018, Saat: 12:21
Sql serverden cliente part part download - Yazar: Bay_Y - 02-10-2018, Saat: 13:46
Sql serverden cliente part part download - Yazar: malitutuncu - 03-10-2018, Saat: 19:31
Cvp: Sql serverden cliente part part download - Yazar: Bay_Y - 03-10-2018, Saat: 22:44
Sql serverden cliente part part download - Yazar: ismailkocacan - 03-10-2018, Saat: 20:02

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Http aSync Download'ı Geliştirmek omer 0 1.071 02-03-2022, Saat: 16:30
Son Yorum: omer
  Webbrowser üzerinden Download sorunu COMMANDX 3 2.286 05-05-2021, Saat: 09:57
Son Yorum: COMMANDX
  Multi-Thread Partial Download yhackup 0 2.172 26-10-2018, Saat: 16:56
Son Yorum: yhackup



Konuyu Okuyanlar: 1 Ziyaretçi