Database - Veritabanı
Veritabanlarından Veri Çekip Bir Başka Veritabanına Yazma
Veritabanlarından Veri Çekip Bir Başka Veritabanına Yazma
-
MhmdAlmz bunu yazdıtrooper bunu yazdı
Edit: Hocam söylemiş olduğum yazılım ücretsiz ve açık kaynak
Bu ürün ile cross platform replication yaparsın.
Deneyeyim hocam onu da bir şunu çözemez isem
dene bakalım :)
https://www.youtube.com/watch?v=mLJyj86ZUgM
eski bir video olmasına karşı 4 dk 3.dk dan itibaren 2 sql nasıl sync halde çalışıyo görebilirsin sorgu dönüşlerini görebilirsin
-
Navicat ile dataları atıyorum fakat Şöyle bir sorun var MSSQL de veritabanı isimleri büyük harfli iken Myssql de tolowercase şeklinde.
Yani MSSQL de tablo adı KullaniciBilgileri iken MYSQL de kullanicibilgileri olduğundan hatalı atıyor.. MSSQL deki tablo isimlerinin hepsini ToLowerCase yapmam gerekiyor bunun için bi yol arıyorum şuan
-
MhmdAlmz bunu yazdı
Navicat ile dataları atıyorum fakat Şöyle bir sorun var MSSQL de veritabanı isimleri büyük harfli iken Myssql de tolowercase şeklinde.
Yani MSSQL de tablo adı KullaniciBilgileri iken MYSQL de kullanicibilgileri olduğundan hatalı atıyor.. MSSQL deki tablo isimlerinin hepsini ToLowerCase yapmam gerekiyor bunun için bi yol arıyorum şuan
Bu kod işini görür diye düşünüyorum. İş arasında test etmeden yazdım bi kontrol edersin..
DECLARE C_CURSOR CURSOR LOCAL FOR
SELECT name
FROM sys.tables
DECLARE @TABLO_ADI VARCHAR(1024)
DECLARE @SQL VARCHAR(1024)
OPEN C_CURSOR
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER(@TABLO_ADI)
--SELECT (@SQL)
exec (@SQL)
SET @SQL = NULL
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
END
CLOSE C_CURSOR
DEALLOCATE C_CURSOR
GO
-
Deneyeyim hocam
-
select yaptığım yeri değiştirmen gerekiyor. Daha doğrusu kodu execute etmen gerekiyor. Aşağıda yeni kodu paylaştım. bold olan yerleri editledim. Orjinal postuda değiştiriyorum.
Kusura bakma dediğim gibi iş arasında yazdım dalgınlıkla unutmuşum :)
DECLARE C_CURSOR CURSOR LOCAL FOR
SELECT name
FROM sys.tables
DECLARE @TABLO_ADI VARCHAR(1024)
DECLARE @SQL VARCHAR(1024)
OPEN C_CURSOR
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER(@TABLO_ADI)
--SELECT (@SQL)
exec (@SQL)
SET @SQL = NULL
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
END
CLOSE C_CURSOR
DEALLOCATE C_CURSOR
GO
-
_DevLop_ bunu yazdı
select yaptığım yeri değiştirmen gerekiyor. Daha doğrusu kodu execute etmen gerekiyor. Aşağıda yeni kodu paylaştım. bold olan yerleri editledim. Orjinal postuda değiştiriyorum.
Kusura bakma dediğim gibi iş arasında yazdım dalgınlıkla unutmuşum :)
DECLARE C_CURSOR CURSOR LOCAL FOR
SELECT name
FROM sys.tables
DECLARE @TABLO_ADI VARCHAR(1024)
DECLARE @SQL VARCHAR(1024)
OPEN C_CURSOR
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER(@TABLO_ADI)
--SELECT (@SQL)
exec (@SQL)
SET @SQL = NULL
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
END
CLOSE C_CURSOR
DEALLOCATE C_CURSOR
GO
Hocam sen muhteşem bir detaysın :)
Edit : I'lar i olması gerekirken ı oluyor hocam VT de ı harfi nasıl olur ?
Edit 2:
Koda şöyle bir ekleme yaptım ama ilerde patlak verir mi ki ?
ET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + REPLACE(LOWER(@TABLO_ADI),'ı','i')
-
MhmdAlmz bunu yazdı_DevLop_ bunu yazdı
select yaptığım yeri değiştirmen gerekiyor. Daha doğrusu kodu execute etmen gerekiyor. Aşağıda yeni kodu paylaştım. bold olan yerleri editledim. Orjinal postuda değiştiriyorum.
Kusura bakma dediğim gibi iş arasında yazdım dalgınlıkla unutmuşum :)
DECLARE C_CURSOR CURSOR LOCAL FOR
SELECT name
FROM sys.tables
DECLARE @TABLO_ADI VARCHAR(1024)
DECLARE @SQL VARCHAR(1024)
OPEN C_CURSOR
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER(@TABLO_ADI)
--SELECT (@SQL)
exec (@SQL)
SET @SQL = NULL
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
END
CLOSE C_CURSOR
DEALLOCATE C_CURSOR
GO
Hocam sen muhteşem bir detaysın :)
Edit : I'lar i olması gerekirken ı oluyor hocam VT de ı harfi nasıl olur ?
Edit 2:
Koda şöyle bir ekleme yaptım ama ilerde patlak verir mi ki ?
ET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + REPLACE(LOWER(@TABLO_ADI),'ı','i')
bir tane function yazdım her yerde lazım olur diye.. onu kullan. Sorguyu editledim..
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[F_GLOBAL_DILE_CEVIR]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[F_GLOBAL_DILE_CEVIR]
GO
CREATE FUNCTION [dbo].[F_GLOBAL_DILE_CEVIR] (@DEGER VARCHAR(1024))
RETURNS VARCHAR(1024)
AS
BEGIN
--DECLARE @DEGER VARCHAR(1024)
SET @DEGER = replace(replace(replace(REPLACE(REPLACE(@DEGER, 'ı', 'i'), 'ş', 's'), 'ü', 'u'), 'ğ', 'g'), 'ç', 'c')
RETURN @DEGER
END
GO
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DECLARE C_CURSOR CURSOR LOCAL FOR
SELECT name
FROM sys.tables
DECLARE @TABLO_ADI VARCHAR(1024)
DECLARE @SQL VARCHAR(1024)
OPEN C_CURSOR
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
WHILE @@FETCH_STATUS = 0
BEGIN
SET @TABLO_ADI = dbo.F_GLOBAL_DILE_CEVIR(@TABLO_ADI)
SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER(@TABLO_ADI)
--SELECT (@SQL)
exec (@SQL)
SET @SQL = NULL
FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI
END
CLOSE C_CURSOR
DEALLOCATE C_CURSOR
GO
-
devlop eyvallah hocam teşekkürler :)
-
Sorunu şu şekilde çözmeye calıstım..
develop hocamın verdiği kod ile ilk önce tablo adlarını küçük yaptım..
daha sonra NAVİCAT ile DB yi datatransfer seneceğinden bir başka DB ye insert ettim .
Geliştirmiş olduğun DB haliyle tablo alanları vs daha fazla oldugundan.. Bir sorgu ile Geliştirmiş olduğum VT'nin Column Name Data Type Data Lenght vs.. gibi özelliklerini bir şema halinde cıkarıp.. Insert ettiğim db de bu alanlar yoksa tabloyu güncelliyorum..Sorun şuan pek gözükmüyor. Bu işlem süreci biraz uzadı bilgisizlikten olsa gerek..
Ben bu şekilde çözdüm ilerde aynı sorunu yaşayacak olan hocaları çaya davet ediyorum ,:D Anlatırız hallederiz hoca dert etme :D