<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GÜVEN ATBAKAN &#187; ASP</title>
	<atom:link href="http://www.guvenatbakan.net/kategoriler/web-tasarim-yazilim/yazilim/asp-yazilim-web-tasarim-yazilim/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guvenatbakan.net</link>
	<description>Lorem ipsum dolor sit amet.</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:40:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mssql2Mysql script bilgileri</title>
		<link>http://www.guvenatbakan.net/2010/03/15/mssql2mysql-script-bilgileri/</link>
		<comments>http://www.guvenatbakan.net/2010/03/15/mssql2mysql-script-bilgileri/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 18:12:24 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[mssql to mysql]]></category>
		<category><![CDATA[mssql2mysql]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=460</guid>
		<description><![CDATA[Bu yazımda sizlere scriptin çalışma mantığından  bahsedeceğim ve kod açıklamalarını yapacağım.
Öncelikle kullanıcıdan kaynak (Mssql) sunucu ve hedef (Mysql) sunucunun bilgilerini bir form yardımıyla alıyoruz. Aynı işlemi dosya düzenleme yoluyla da yapabilirlerdi ancak bu şekilde daha kolay  [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazımda sizlere scriptin çalışma mantığından  bahsedeceğim ve kod açıklamalarını yapacağım.<span id="more-460"></span></p>
<p>Öncelikle kullanıcıdan kaynak (Mssql) sunucu ve hedef (Mysql) sunucunun bilgilerini bir form yardımıyla alıyoruz. Aynı işlemi dosya düzenleme yoluyla da yapabilirlerdi ancak bu şekilde daha kolay olacağını düşündüm.</p>
<p>Akabinde bağlantı cümleciklerini oluşturuyorum.</p>
<p>Bir sonraki aşama ise kaynak veritabanındaki tüm tabloları listelemek oluyor.</p>
<blockquote><p>tablolar = &#8220;&#8221;</p>
<p>set rs = mssqldb.execute(&#8220;SELECT * FROM INFORMATION_SCHEMA.TABLES&#8221;)<br />
do until rs.eof<br />
&#8216;Eğer tablo sistem tablosu değilse döngüde kullanmak için tablolar değişkenine virgül yardımıyla sıralıyoruz.<br />
if left(rs(&#8220;table_name&#8221;),3)&lt;&gt;&#8221;sys&#8221; then<br />
tablolar = tablolar&amp;rs(&#8220;table_name&#8221;)&amp;&#8221;,&#8221;<br />
end if<br />
rs.movenext<br />
loop<br />
rs.close<br />
set rs = nothing</p></blockquote>
<p>Tablolarımızı yazdırdıktan sonra tüm tabloları işleme sokabilmek için for döngüsüne alıyoruz.</p>
<blockquote><p>tablox = split(tablolar,&#8221;,&#8221;)<br />
for k = 0 to Ubound(tablox)-1<br />
tabloismi = tablox(k)</p>
<p>&#8216;işlemler burada yapılıyor.</p>
<p>next</p></blockquote>
<p>Kodların anlatımında dıştan içe yöntem kullandım. Kabuk kabuk anlatıyorum. Bu nedenle yukarıdaki kodda döngüyü başlattım ve bitirdim.</p>
<p>Şimdi tablonun sütun sayısına göre bir döngü oluşturacağız. Bu döngü içinde Mysql&#8217;de tablomuzu ve sütunlarını oluşturacağız.</p>
<blockquote><p>Set ks = Server.CreateObject(&#8220;ADODB.RecordSet&#8221;)<br />
ks.open &#8220;select * from &#8220;&amp;tabloismi&amp;&#8221;",mssqldb,3,3<br />
sayif = ks.fields.count</p>
<p>For i = 0 to sayif-1</p>
<p>Next</p></blockquote>
<p>Bu noktada birkaç bilgilendirme yapayım. Bu döngü içerisinde sütunun ismini, veri tipini ve gerekirse uzunluğunu alacağız.</p>
<p>Sütunun ismi:</p>
<blockquote><p>ks.fields(i).Name</p></blockquote>
<p>Sütunun tipi:</p>
<blockquote><p>ks.fields(i).Type</p></blockquote>
<p>Sütunun uzunluğu:</p>
<blockquote><p>ks.fields(i).DefinedSize</p></blockquote>
<p>Sütun tipleri sayısal değer olarak geliyor. Bu sayısal değerleri birazdan göreceğiniz ifli koşullarla sql cümleciğinde kullanılabilecek tipe getireceğiz.<br />
Sütun uzunluğu ise bir çok sütun tipinde kullanılmıyor. Ama kullanılıyor da olabilir çünkü tam anlamıyla hakim olduğumu söyleyemem.<br />
Aynı şekilde bu üç değerin dışında birçok değer var, fakat bir çoğu için gerekli mi değil mi, nerede kullanılıyor kullanılmıyor bilmediğimden bu scripte eklemedim.</p>
<blockquote><p>ty = ks.fields(i).Type<br />
uzunluk = ks.fields(i).DefinedSize<br />
ty = cint(ty)<br />
if ty = 3 then<br />
nty = &#8220;int&#8221;<br />
nuz = &#8220;&#8221;<br />
elseif ty = 129 then<br />
nty = &#8220;char&#8221;<br />
nuz = &#8220;(&#8220;&amp;uzunluk&amp;&#8221;)&#8221;<br />
elseif ty = 202 then<br />
nty = &#8220;text&#8221; &#8216;nvarchar<br />
nuz = &#8220;&#8221;<br />
elseif ty = 11 then<br />
&#8216;nty = &#8220;ENUM(&#8220;&#8221;1&#8243;&#8221;, &#8220;&#8221;0&#8243;&#8221;)&#8221;<br />
nty = &#8220;tinyint&#8221;<br />
nuz = (&#8220;1&#8243;)<br />
elseif ty = 135 then<br />
nty = &#8220;datetime&#8221;<br />
nuz = &#8220;&#8221;<br />
elseif ty = 131 then<br />
nty = &#8220;int&#8221;&#8216;numeric<br />
nuz = &#8220;&#8221;<br />
elseif ty = 128 then<br />
nty = &#8220;binary&#8221;<br />
nuz = &#8220;(&#8220;&amp;uzunluk&amp;&#8221;)&#8221;<br />
else<br />
nty = &#8220;text&#8221;<br />
nuz = &#8220;&#8221;<br />
end if</p></blockquote>
<p>Yukarıda verdiğim listeyi kısaltarak ekledim. Genel olarak mantığı anlamışsınızdır.</p>
<p><em>Veri tipleri ile ilgili bilgilendirmeler:</em><br />
Mssql&#8217;deki BIT yani True/False veri tipini tinyint(1) olarak kaydediyorum. Normalde Mysql&#8217;de bu işlem ENUM ile yapılıyor. Fakat ENUM&#8217;a çevirdiğimiz zaman ASP dosyalarımızdaki bağlantı cümleciklerinde köklü değişiklikler yapmamız gerekecek.</p>
<p>Normal bağlantı cümleciğimiz şu şekilde:</p>
<blockquote><p>select * from tablo where aktif = 1</p></blockquote>
<p>Bu bize aktif sütunu True olan kayıtları getirir. ENUM tipine çevirdiğimiz zaman aktif = &#8217;1&#8242; şeklinde kullanmamız gerekiyor.<br />
Eğer bağlantı cümleciklerinde zaten bu şekilde kullandıysanız veya sitenizi PHP ile yeniden kodlayacaksanız ENUM tipine geçmenizi öneririm.<br />
Diğer değişikliklerse Numeric, nvarchar tiplerinde oldu. Nvarchar text olarak kaydedildi, numeric ise int olarak. Neden derseniz, kendi veritabanımda denedim bu şekilde başarıya ulaşamadım <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Geriye kalan kodlarımıza devam edebiliriz. Şimdi tablomuzu ve sütunlarımızı oluşturacağız. Bununla ilgili bilgilendirmeleri kodun içinde yapacağım.</p>
<blockquote><p>if i = 0 then<br />
&#8216;i=0 durumunda birinci sütunda oluyoruz. Ve tablomuzu ilk sütunuyla birlikte oluşturuyoruz.<br />
&#8216;Bu scripti birden fazla denemeyle oluşturduğum için tek tek Phpmyadminden tablo silmek ile uğraşmadım. Bu kod ile Mysql&#8217;de varolan tabloyu sildim. Sonra tekrar oluşturdum.<br />
mysqldb.execute(&#8220;DROP TABLE IF EXISTS `&#8221;&amp;tabloismi&amp;&#8221;` &#8220;)<br />
&#8216;Eğer ki ilk sütunumuz sayısal bir değerse %90 ihtimalle otomatik artan bir değerdir. Belki otomatik artan değer olup olmadığını kodlarla bulabiliriz ama ben bilmiyorum henüz <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
if ty = 3 or ty = 17 or ty = 20 or ty = 5 or ty = 4 then<br />
mysqldb.Execute(&#8220;Create Table &#8220;&amp;tabloismi&amp;&#8221;  (&#8220;&amp;ks.fields(i).name&amp;&#8221; &#8220;&amp;nty&amp;nuz&amp;&#8221; NOT NULL auto_increment , PRIMARY KEY  (`&#8221;&amp;ks.fields(i).name&amp;&#8221;`))&#8221;)<br />
else<br />
&#8216;Eğer ilk sütunumuz sayısal değilse otomatik artan olmasına imkan yoktur.<br />
mysqldb.Execute(&#8220;Create Table `&#8221;&amp;tabloismi&amp;&#8221;`  (&#8220;&amp;ks.fields(i).name&amp;&#8221; &#8220;&amp;nty&amp;nuz&amp;&#8221;) &#8221; )<br />
end if</p>
<p>else<br />
&#8216;i=0 olmadığı yani ilk sütun olmayan durumlarda Alter Table komutuyla tablomuza sütunları tek tek ekliyoruz.<br />
mysqldb.Execute(&#8220;alter table &#8220;&amp;tabloismi&amp;&#8221;  add &#8220;&amp;ks.fields(i).name&amp;&#8221; &#8220;&amp;nty&amp;&#8221;"&amp;nuz&amp;&#8221;")<br />
end if</p></blockquote>
<p>Ve böylelikle veritabanımızı oluşturmuş bulunuyoruz. Sütun tipleri ile ilgili problemleri olanlar olabilir, hemen belirtiyim; veritabanı konusunda çok çok iyi bir bilgiye sahip olduğumu söyleyemem. Bu kodlar ile kendi veritabanımı sorunsuz olarak oluşturdum. Eğer sizin veritabanınız düzgün bir biçimde aktarılmıyorsa ve yeterli bilgiye sahip değilseniz iletişime geçerseniz elimden geldiğince yardımcı olmaya çalışırım.</p>
<p><strong>Artık sıra geldi verilerimizi aktarmaya!</strong></p>
<p>Yukarıda olduğu gibi kodun içinde neyi ne amaçla yaptığımı anlatacağım.</p>
<blockquote><p>Do While not ks.eof &#8216;Hepiniz biliyorsunuz bunu <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
eklen = &#8220;&#8221;<br />
deger = &#8220;&#8221;<br />
&#8216;Hangi veritabanında hangi sütun olduğunu bilmiyoruz, dolayısıyla genel bir bağlantı cümleciği kullanmamız gerekiyor. Bu cümlecikte aşağıdaki &#8220;insert into&#8221; ile başlayan kod.</p>
<p>For i = 0 to sayif-1<br />
&#8216;insert into kodunu &#8220;insert into tablo (sutun1,sutun2,sutun3) Values (&#8216;deger1&#8242;,&#8217;deger2&#8242;,&#8217;deger3&#8242;)&#8221; şeklinde kullanıyoruz. Görüldüğü üzre son sütunda ve verisinde virgül kullanılmıyor. Bu nedenle aşağıdaki if kontrolünde son sütunsa virgül koymuyoruz.<br />
if i = sayif-1 then<br />
eklen = eklen&amp;&#8221;`&#8221;&amp;ks.fields(i).name&amp;&#8221;` &#8221;<br />
&#8216;Veri tipimiz datetime ise daha önceden belirlediğim Tarihcevir fonksiyonu ile Mssql deki tarihleri mysql biçimine çeviriyorum.<br />
&#8216; 12.03.2010 01:20:56 &#8216;In MSSQL<br />
&#8216; 2010-03-12 01:20:56: &#8216;In MySQL<br />
if cint(ks.fields(i).Type) = 135 then<br />
a = Tarihcevir(ks.fields(i)&amp;&#8221;")<br />
else<br />
a = ks.fields(i)&amp;&#8221;"<br />
end if<br />
deger = deger&amp;&#8221;&#8216;&#8221;&amp;Temizle(a)&amp;&#8221;&#8216; &#8221;<br />
else<br />
&#8216;Son sütun olmadığı için gönül rahatlığıyla virgülleri ekliyorum.<br />
eklen = eklen&amp;&#8221;`&#8221;&amp;ks.fields(i).name&amp;&#8221;`, &#8221;<br />
if cint(ks.fields(i).Type) = 135 then<br />
a = Tarihcevir(ks.fields(i)&amp;&#8221;")<br />
else<br />
a = ks.fields(i)&amp;&#8221;"<br />
end if<br />
deger = deger&amp;&#8221;&#8216;&#8221;&amp;Temizle(a)&amp;&#8221;&#8216; , &#8221;<br />
end if<br />
next</p>
<p>&#8216;Ve kaydı tablomuza gönderiyoruz.<br />
sql = &#8220;insert into &#8220;&amp;tabloismi&amp;&#8221; (&#8220;&amp;eklen&amp;&#8221;) VALUES ( &#8220;&amp;deger&amp;&#8221;)&#8221;<br />
mysqldb.execute(sql)<br />
ks.movenext<br />
s = s +1<br />
Loop</p></blockquote>
<p>Kodlarımın açıklaması bu kadar. Mantığı kavradıysanız eğer siz de farklı yollardan bu işe yarayan bir script yazabilirsiniz.</p>
<p>Kendi veritabanımı taşıdım demiştim, işte veritabanımın bilgileri:<br />
19 tablo, 20,318 kayıt. Eksiksiz aktarım.</p>
<p>Bir not, mssql sunucunuz ve mysql sunucunuz aynı bilgisayar üzerinde olursa script timeout vermez. Eğer Local&#8217;de çalışırsanız tadından yenmez <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.guvenatbakan.net/mssql2mysql/mssql2mysql.asp.zip">Bu güzelim scripti indir</a></p>
<p><a href="http://kofler.info/english/mssql2mysql/">Yok bu hoşuma gitmedi başka bitane varmış onu indireyim. (Visual basicte yazılmış ve sadece orada kullanılan, mükemmel olduğunu düşündüğüm, mysql resmi sitesinde linki bulunan, çalıştırmayı beceremediğim dosya)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2010/03/15/mssql2mysql-script-bilgileri/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MsSQL to MySQL</title>
		<link>http://www.guvenatbakan.net/2010/03/13/mssql-to-mysql/</link>
		<comments>http://www.guvenatbakan.net/2010/03/13/mssql-to-mysql/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 16:27:27 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[mssql mysql converter]]></category>
		<category><![CDATA[mssql to mysql]]></category>
		<category><![CDATA[mssql veritabanı mysqle dönüştürme]]></category>
		<category><![CDATA[mssql2mysql]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=423</guid>
		<description><![CDATA[Mssql veritabanını Mysql&#8217;e aktarmaya yarayan scripti an itibariyle tamamlamış bulunuyorum.
Download
Kullanımı:
Herhangi bir kurulum yapmaya gerek bulunmamaktadır. İndirdiğiniz dosyayı sunucunuza gönderin. Tarayıcınızdan dosyayı açın, Mssql ve Mysql veritabanı bilgilerini girin. Execute butonuna  [...]]]></description>
			<content:encoded><![CDATA[<p>Mssql veritabanını Mysql&#8217;e aktarmaya yarayan scripti an itibariyle tamamlamış bulunuyorum.<span id="more-423"></span></p>
<p><a href="http://www.guvenatbakan.net/mssql2mysql/mssql2mysql.asp.zip">Download</a></p>
<p><strong>Kullanımı:</strong></p>
<p>Herhangi bir kurulum yapmaya gerek bulunmamaktadır. İndirdiğiniz dosyayı sunucunuza gönderin. Tarayıcınızdan dosyayı açın, Mssql ve Mysql veritabanı bilgilerini girin. Execute butonuna basarak verilerinizi aktarın.</p>
<p><strong>Bazı bilgiler:</strong></p>
<p>Sunucuların genelinde Mysql&#8217;i uzak sunucu olarak kullanamıyorsunuz. Bu nedenle dosyanız mysql veritabanınızın bulunduğu sunucuda olsun. Örnek olarak Localhost <img src='http://www.guvenatbakan.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ancak hızlı bir sunucuya sahip değilseniz, script timeout sorunu yaşanabiliyor. Mssql ile mysql veritabanınızın aynı sunucuda olması en hızlı yöntemdir.</p>
<p>Bu dosya ile veritabanımı sorunsuz olarak taşıdım. Tabi bu demek değildir ki siz sorun yaşamayacaksınız. Herhangi bir hatada benimle iletişime geçebilirsiniz.Script&#8217;in gelişmesi için katkılarınızı bekliyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2010/03/13/mssql-to-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSSQL&#8217;den MySQL&#8217;e veri aktarımı</title>
		<link>http://www.guvenatbakan.net/2010/03/08/mssqlden-mysqle-veri-aktarimi/</link>
		<comments>http://www.guvenatbakan.net/2010/03/08/mssqlden-mysqle-veri-aktarimi/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 01:04:36 +0000</pubDate>
		<dc:creator>Güven Atbakan</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[mssql]]></category>
		<category><![CDATA[mssql to mysql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[plesk backup]]></category>
		<category><![CDATA[plesk panel]]></category>

		<guid isPermaLink="false">http://www.guvenatbakan.net/?p=420</guid>
		<description><![CDATA[Parallels Plesk Panel&#8217;den alınan Mssql yedeğini malesef Plesk Panel dışında bir yerde kullanamıyoruz. Gerçekten sinir bozucu bir durum. Windows&#8217;tan bıktım usandım artık.  Ama bendeki de akıl değil ki, niçin Mysql le yazmak yerine Mssql ile yazıyorsun veritabanını.
İnternette biraz araştırma yaptım  [...]]]></description>
			<content:encoded><![CDATA[<p>Parallels Plesk Panel&#8217;den alınan Mssql yedeğini malesef Plesk Panel dışında bir yerde kullanamıyoruz. Gerçekten sinir bozucu bir durum. Windows&#8217;tan bıktım usandım artık.  Ama bendeki de akıl değil ki, niçin Mysql le yazmak yerine Mssql ile yazıyorsun veritabanını.</p>
<p>İnternette biraz araştırma yaptım fakat elle tutulur bir şey bulamadım. Madem direkt olarak geçiş yapamıyorum, bende manuel olarak backup yapacağım. Hem de bu esnada Mssql to mysql yapacağım. Eğer ki global bir script haline getirebilirsem ne mutlu bana.</p>
<p>Bu iş beni çok yoracak gibi duruyor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.guvenatbakan.net/2010/03/08/mssqlden-mysqle-veri-aktarimi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

