Re: [Linux-programlama] Buyuk Boyutta Dosyalar ile islemler

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: ali@linuxprogramlama.com
Date: Mon 03 Jan 2005 - 12:08:49 EET


Selamlar
islediginiz data ile ilgli bir sorun olabiliren fazla 128 karakterlik
alana 80 karakter yer ayirmssiniz gorudugum kadariyla
M.Ali VARDAR

> Merhabalar ..
> Daha once de sordugum bi soru vardi ..
> Buyuk boyutlu dosyalar ile islemler konu basligi altindaydi ..
>
> Simdi bu konu uzerinde belli bir noktaya varmis durumdayim ..
> Soyleki .. 2.5 GB lik ve 1 GB lik iki dosyam mevcuttu ..
> Bunlari cat | grep | cut | sort komutlarini kullana kullana .. 2.5 GB
> lik dosyayi 400 MB a kadar ve 1 GB kusurluk dosyami da 70 MB a kadar
> indiriyorum ..
> Buraya kadar bir sorunum yok .. Hatta 70 MB lik dosyami da satir satir
> asagidaki c kodu sayesinde mysql veritabanima atabiliyorum. yaklasik
> olarak 5.3 milyon satir .. ve 5.3 milyon kayit olarak veritabanimda
> yer aliyor. Yalniz ayni kod ile 400 MB lik dosyayi veritabanina
> aktaramiyorum. Core Dumped aliyorum. Isletim sistemi FreeBSD .. biraz
> yabancisiyim ama .. sorun cikaracagini sanmiyorum. Kodda nasil bir
> duzenleme yapmaliyim ki bu 400 MB lik dosyayi veritabanina
> gondereyim????
>
> Ilk soru merakimdan ..
> Asil sorunum bu 400 MB lik dosyamdan iki tane olusu (gun icerisinde
> hede.old ne hede.new seklinde) ve bu dosya icinde su sekilde satirlar
> var ..
>
> hede file :
> abc
> def
> ghi
> jkl
>
> seklinde satir satir en fazla 128 karakterden ibaret textlerden ibaret ..
> ama gunluk olarak bu text ler degisebiliyor. Misal def gidiyor ve
> yerine xyz gelebiliyor. Satirlarda degisim soz konusu .. Alfabetik
> bir liste ama
>
> Benim asil yapmak istedigim .. gunluk olarak gelen bu dosyalar
> arasindaki farklari ayirmak
> Bunun icin c kodumda nasil bir degisiklik yapabilirim???
>
> Ondan sonra bu degisiklikleri veritabanina atacagim zaten
>
> Muhim olan benim icin bu hede.old ve hede.new dosyalari arasindaki
> degisiklikleri bulmak
>
> Bu islem icin nasil bir yol izlemeliyim yada??
> C kodunda yapmam gerekn duzenlemeler nelerdir sizce?
>
>
> C File --------
>
> #include <stdio.h>
> #include <string.h>
> #include <mysql/mysql.h>
> unsigned long satirOku(FILE *dosya,unsigned long maksimumBoy,char *veri )
> { char tmp;long say=0;
> while(fread(&tmp,1,1,dosya))
> { if (maksimumBoy>say && tmp!='\n')
> veri[say++]=tmp;
> else {veri[say++]='\0'; return say;}
> }
> return say;
> }
> int main(char **args)
> {
> MYSQL_RES *result;
> MYSQL_ROW row;
> MYSQL *connection, mysql;
> int state;
> FILE *fp;
> unsigned long satirBoy;
> char line[80];
> char s[100];
>
> mysql_init(&mysql);
> connection = mysql_real_connect(&mysql, "localhost", "root",
> "pass", "domain", 0, 0, 0);
> if( connection == NULL )
> { printf(mysql_error(&mysql));
> return 1;
> }
> fp = fopen("n","r");
> while ( satirOku(fp,50,line))
> {
> strcpy(s, "insert into dom2 values ('");
> strcat(s,line);
> strcat(s,"')");
> /*s = "insert into dom values ('" +line+ "')";*/
> state = mysql_query(connection, s);
> if( state != 0 )
> {
> printf(mysql_error(connection));
> return 1;
> }
>
> }
> mysql_close(connection);
> printf("Done.\n");
>
> }
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.