Özgür Özvarış

Bir yazılımcının kırık dökük dünyası

Sqlite int to real

clock Temmuz 22, 2014 11:15 by author OzgurOzvaris

Merhaba,

Kaynak : converting int to real in sqlite

Sqllite sql de bir sayıyı başka bir sayıya bölerseniz sonun integer'a göre yuvarlıyor. Bunu engellemek için üzerinde işlem yapmak istediğiniz sayıyı "1.0" ile çarmak gerekiyor.

SELECT something*1.0/total FROM somewhere

İyi çalışmalar.



Sql Lite EXPLAIN QUERY PLAN

clock Temmuz 22, 2014 10:40 by author OzgurOzvaris

Merhaba Arkadaşlar,

Zorlu bir sorgu denememde sql lite da soğru indexlemeleri yapmanın ne kadar önemli olduğunu bir kere daha anladım.

sql lite da bir sorgunun hangi yoldan geçtiğini öğrenmek yani indexleri kullandığını öğrenmek için

EXPLAIN QUERY PLAN [SQLite Query]

Komutunu kullanmanız gerekiyor.

İyi çalışmalar.



SqlLite Truncate Table

clock Temmuz 21, 2014 18:13 by author OzgurOzvaris

Merhaba Arkadaşlar,

Kaynak : http://www.tutorialspoint.com/sqlite/sqlite_truncate_table.htm

Sqllite databaseinde truncate table komutu yok onun yerine şöyle yapabilirsiniz.

DROP TABLE table_name;

Peşinden de

VACUUM;

şeklinde shirink yaparsanız aynı işi yapacaktır...

İyi çalışmalar.



Sqlite Attach db

clock Temmuz 21, 2014 13:09 by author OzgurOzvaris

Merhaba Arkadaşlar,

kaynak : http://www.tutorialspoint.com/sqlite/index.htm 

Farkındasınızdır sürekli odak noktam değişiyor. Aslında bunu belirleyen o anki ihtiyaçlar. Yoksa sadece merak değil emin olabilirsiniz :)

Sqlite her geçen gün işimizin bir parçası olmaya devam ediyor. Kolay üretilebilmesi, kolay kopyalanabilmesi, ACID yapısına uygunluğu avantajları gerçkten hiçte az değil. Tabi hala çözemediğimiz sorunlarıda var bunlardan bir tanesi "table lock". Yoğun insert yaptığınızda database'den eğer uzun sürecek bir select cümlesi isterseniz insert cümleleri sql cümlesinin bitmesini bekliyor. Bu sorunuda aşacağımı umuyorum. Şuan ciddi bir sorun bizim için. Baktım bir şeyler var gibi ancak zaman ayıramadım.

Neyse konumuza dönersek. Sqlite dabase leri birine eklenebiliyor ve ortak olarak sorgulabiliyor ve işlem yapılabiliyor. Bunun için şu komut setini sqlite admin yada sql lite consolundan kullanabilirsiniz.

attach 'driver:\directory_path\SqlLogTmp.s3db' as 'TempLogDB'

 Ekleyip eklemediğini kontrol etmek için

PRAGMA database_list;

Çıkarmak için

detach database  TempLogDB

Komutlarından faydalanabilirsiniz.

Attach Ettiğiniz db yi sorgulamak isterseniz aşağıdaki örnek faydalı olacaktır.

select * from TempLogDB.TableName

Yada içine toplu kayıt atmak isterseniz size bir örnek daha...

Insert Into TempLogDB.SimpleLog Select * from SimpleLog 
where rowid between 7195251 and 7507051 order by rowid desc

İyi çalışmalar.

 



SqlLite yavaş insert çözümü

clock Temmuz 17, 2014 16:33 by author OzgurOzvaris

Merhaba Arkadaşlar,

Kaynak : SQLite Insert very slow?

SqlLite da eğer çoklu insert sorgu gönderecekseni loop'unuzun başına ve sonunda transaction açma kapama eklemeyi unutmayın. Aksi takdirce sizi çok oyalar.

Ör :

dbcon = new SQLiteConnection(connectionString);
dbcon.Open();

SQLiteCommand sqlComm;
sqlComm = new SQLiteCommand("begin", dbcon);
sqlComm.ExecuteNonQuery(); 
//---INSIDE LOOP

 sqlComm = new SQLiteCommand(sqlQuery, dbcon);

 nRowUpdatedCount = sqlComm.ExecuteNonQuery(); 

//---END LOOP
sqlComm = new SQLiteCommand("end", dbcon);
sqlComm.ExecuteNonQuery(); 
dbcon.close();

İyi çalışmalar.



Sqllite MSSQL bağlantısı

clock Haziran 26, 2014 16:03 by author OzgurOzvaris

Değerli Arkadaşlar,

Kaynak :

Creating a SQL Server Linked Server to SQLite to Import Data

SQLlite'ı hafife almamanızı tavsiye ederim. Adı lite olsada çok iş görüyor. Loglama sistemimiz tamamen ona emane etmiş durumdayız. Çok basit bir log tablosuna sürekli olarak log satırları yazdırıyoruz yaklaşık olarak günde 300.000 satırdan fazla log satırı yazıldığı oluyor. Ama hiç bir veri kaybımız olmadı. Sorunları yok değil ama loglama konusunda beklentimizi karşıladığını söylemelim.

İyi güzel logluyoruzda bu logları nasıl işleyeceğiz ve analiz edeceğiz. İşte burada lite olmasının sorunları başlıyor. Excel'e çıktı alması bizi 65bin küsür sınırı ile muhatap ediyor excel export adı altında yeni satır sınırı olmayan excellere export yapsada bu işlemi hem çok yavaş hemde açık olan excel'e satır satır eklemek gibi garip bir yöntem kullandığı için 100bin üzeri satırlada ciddi zaman kaybı oluyor. Asıl sorun bu değil asıl sorun sunucumuzda bu yöntemle açabileceği bir excel yüklü olmaması. Bu durumda iş parçalı olarak küçük excel'lere atılarak yapıloyor sonra bu exceller analiz için başka satır sınırı olmayan excelde birleştiriliyor bayağı uzun bir angarya.

Bu gün bir den bir ampul yandı kafamda. Ya dedim bu sql lite mssql ile bir bağlantı kuramazmı. Hemen karşıma olabileceğine dair linkler geldi. Bu linkteki adımları tek tek anlatmayacağım. Böyle böyle bir şeye ihtiyaç duyarsanız sizde bu adımları uygulayabilirsiniz.

http://www.mssqltips.com/sqlservertip/3087/creating-a-sql-server-linked-server-to-sqlite-to-import-data/

Öncelikle bir odbc driver kurmanız gerekiyor

http://www.ch-werner.de/sqliteodbc/

Sonra bu odbc driver'a konuda bahsedildiği gibi SystemDSN altına Add işlemiş kurduğunuz SQLLite 3 driver'ını kullanarak database'iniz bağlıyorsunuz.

Ardından sql server'a linked server olarak tanımlıyorsunuz.

USE [master]
GO
EXEC sp_addlinkedserver 
   @server = 'Mobile_Phone_DB_64', -- the name you give the server in SSMS 
   @srvproduct = '', -- Can be blank but not NULL
   @provider = 'MSDASQL', 
   @datasrc = 'Mobile_Phone_DB_64' -- the name of the system dsn connection you created
GO

Daha sonra sorgulamaya başlıyorsunuz :)

Select *
from openquery(Mobile_Phone_DB_64 , 'select * from db_notes')
GO

Select * into SQLite_Data -- This creates a table
from openquery(Mobile_Phone_DB_64 , 'select * from db_notes')
GO

Bu kadar basit.

İyi çalışmalar.



Hakkımızda  AboneOl 

Blog Yayınımıza Hoşgeldiniz.

Month List

RecentPosts

Sign In