Excel Verilerinin SQL Server a Aktarımı Nasıl Yapılabilir?
Excel Verilerinin SQL Server a Aktarımı Nasıl Yapılabilir?
Herkese Merhabalar,
Excel Verilerinin SQL Server a Aktarımı Nasıl Yapılabilir? Daha doğrusu şuan yürütmekte olduğum projede (Sendika Üye Otomasyonu) SQL Server 2000 kullanıyorum. Proje bitti fakat son anda kullanıcılardan "Üyelerimizin Aidat Ödemeleri bize bi excel tablosu halinde zaten geliyor.Biz Excel tablosunu programa dahil edebilir miyiz?" gibi istekleri oldu. Bunu Delphi den yaptım. Fakat Verileri alan Query (örneğin 7000 kayıt) verileri alırken çok yavaş davranıyor(2-3 dk gibi). Bu işlemi SQL Server da manuel olarak yaptırdığımda çok hızlı oluyor. Sonuç olarak SQL Server bunu yaparken bi SQL komutu kullanıyor ve öyle işlem yapıyor. Araştırmalarıma rağmen pek başarılı olamadım. SQL Server ın Excel verisini almak için kullandığı SQL Komutunu yada bu işin mantığını bilen varsa yardımını acil olarak rica ediyorum.
Herkese teşekkürler.
Excel Verilerinin SQL Server a Aktarımı Nasıl Yapılabilir? Daha doğrusu şuan yürütmekte olduğum projede (Sendika Üye Otomasyonu) SQL Server 2000 kullanıyorum. Proje bitti fakat son anda kullanıcılardan "Üyelerimizin Aidat Ödemeleri bize bi excel tablosu halinde zaten geliyor.Biz Excel tablosunu programa dahil edebilir miyiz?" gibi istekleri oldu. Bunu Delphi den yaptım. Fakat Verileri alan Query (örneğin 7000 kayıt) verileri alırken çok yavaş davranıyor(2-3 dk gibi). Bu işlemi SQL Server da manuel olarak yaptırdığımda çok hızlı oluyor. Sonuç olarak SQL Server bunu yaparken bi SQL komutu kullanıyor ve öyle işlem yapıyor. Araştırmalarıma rağmen pek başarılı olamadım. SQL Server ın Excel verisini almak için kullandığı SQL Komutunu yada bu işin mantığını bilen varsa yardımını acil olarak rica ediyorum.
Herkese teşekkürler.
Tekrar Merhabalar,
Mustafa Hocam ilginize çok teşekkür ederim.
sql server import
sql server excel
enterprise manager
gibi seçeneklerinizi aradım ve dediğiniz gibi bir sürü sonuç buldum. Fakat bunların çoğu Delphi üzerinden veriyi çekiyolar. Ben SQL Server da bu işi yapan bi SQL komutunun olabileceğini zannediyorum. Varsa da incelediğim örneklerde göremedim. Daha öncede dediğim gibi "ATTACH DATABASE" yada "BACKUP DATABASE" komutları gibi işte atıyorum "IMPORT_EXCEL_DATAS" yada benzer bi komutu SQL Server ın kullandığını zannediyorum.Çünkü manuel bu işi yapıyor.Bu komutu yada komutlar grubunu arıyorum.
Bu hususta bi dostum SQL Server da bi "Job" tanımlamamı ve daha sonra bu "job" ın SQL ine baktığım takdirde orada bulabileceğimi söyledi. Fakat JOb tanımlamakta sıkıntı çektim, işin aslı beceremedim.
Bu hususta başka bir fikriniz varsa yada yardım edebilirseniz sevinirim.
Kolay gelsin.
Mustafa Hocam ilginize çok teşekkür ederim.
sql server import
sql server excel
enterprise manager
gibi seçeneklerinizi aradım ve dediğiniz gibi bir sürü sonuç buldum. Fakat bunların çoğu Delphi üzerinden veriyi çekiyolar. Ben SQL Server da bu işi yapan bi SQL komutunun olabileceğini zannediyorum. Varsa da incelediğim örneklerde göremedim. Daha öncede dediğim gibi "ATTACH DATABASE" yada "BACKUP DATABASE" komutları gibi işte atıyorum "IMPORT_EXCEL_DATAS" yada benzer bi komutu SQL Server ın kullandığını zannediyorum.Çünkü manuel bu işi yapıyor.Bu komutu yada komutlar grubunu arıyorum.
Bu hususta bi dostum SQL Server da bi "Job" tanımlamamı ve daha sonra bu "job" ın SQL ine baktığım takdirde orada bulabileceğimi söyledi. Fakat JOb tanımlamakta sıkıntı çektim, işin aslı beceremedim.
Bu hususta başka bir fikriniz varsa yada yardım edebilirseniz sevinirim.
Kolay gelsin.
Merhaba,
SQL Server'ın çok gelişmiş import/export tool'u var. Database'e sağ tıkla, seçeneklerden import'u bul. Orda zaten sihirbaz seni yönlendirecek.
Şu an SQL Server kurulu olmadığı için tam seçenekleri söyleyemiyorum maalesef. Ama birkaç deneme ile çözersin.
NOT : yedek almayı unutma
Kolay gelsin.
SQL Server'ın çok gelişmiş import/export tool'u var. Database'e sağ tıkla, seçeneklerden import'u bul. Orda zaten sihirbaz seni yönlendirecek.
Şu an SQL Server kurulu olmadığı için tam seçenekleri söyleyemiyorum maalesef. Ama birkaç deneme ile çözersin.
NOT : yedek almayı unutma

Kolay gelsin.
Merhaba mussimsek hocam;
"SQL Server'ın çok gelişmiş import/export tool'u var. Database'e sağ tıkla, seçeneklerden import'u bul. Orda zaten sihirbaz seni yönlendirecek."
demişsiniz.
SQL Server ın bu sihirbazını biliyorum ve birçok kere projelerim dahilinde veri aktarımı yaparken kullandım. Fakat bunu ben yapmıyacam, kulanıcı benim delphide yazdığım arayüzden bu aktarım işlemini yapacak.
Ama gene de insanın kendisine yardımcı olan birilerinin varlığını bilmesi güzel his doğrusu. Herşey için teşekkür ederim.
Bu hususta bana söylenen başka bi tavsiyeyi sizinle ve tüm forumdaki arkadaşlarla paylaşmak isterim.
Tavsiye şuydu;
Enterprise yi aç. import sihirbazında son noktaya gel ama "SON" u tıklama.SQL Server Profiler ı çalıştır. Sonra enterprise dönüp import işlemini başlat. Böylelikle Profiler de SQL Server ın kullandığı komutları gözlemleyebilirsin.
dendi ve bende öyle yaptım. Bana Profiler dan dönen 5 satırlık değerler şunlardı:
1)
exec sp_oledb_ro_usrname
2)
select collationname(0x1F04D00082)
3)
CREATE TABLE [UYE_TAKIP].[dbo].[Sayfa1$] (
[SICIL_NO] nvarchar (255) NULL,
[BRUT_UCRETI] float NULL,
[KESINTI_YUZDESI] float NULL,
[AIDAT_TUTARI] float NULL
)
4)
exec sp_bcp_dbcmptlevel [UYE_TAKIP] SET FMTONLY ON SELECT * FROM [UYE_TAKIP].[dbo].[Sayfa1$] SET FMTONLY OFF exec [UYE_TAKIP]..sp_tablecollations '[UYE_TAKIP].[dbo].[Sayfa1$]'
5)
insert bulk [UYE_TAKIP].[dbo].[Sayfa1$]("SICIL_NO" nvarchar(255) COLLATE SQL_Latin1_General_CP1254_CI_AS,"BRUT_UCRETI" float,"KESINTI_YUZDESI" float,"AIDAT_TUTARI" float)with(check_constraints)
şimdi bu adımları sırayla inceleyecem ki sonuca ulaşacağımı umuyorum.
Sanırım SQL Server bu işi yaparken sp_oledb_ro_usrname, sp_bcp_dbcmptlevel gibi stored procedurlerini kullanıyo.
Şimdi bunları inleyeceğim.
Herkese kolaylıklar diliyorum.
"SQL Server'ın çok gelişmiş import/export tool'u var. Database'e sağ tıkla, seçeneklerden import'u bul. Orda zaten sihirbaz seni yönlendirecek."
demişsiniz.
SQL Server ın bu sihirbazını biliyorum ve birçok kere projelerim dahilinde veri aktarımı yaparken kullandım. Fakat bunu ben yapmıyacam, kulanıcı benim delphide yazdığım arayüzden bu aktarım işlemini yapacak.
Ama gene de insanın kendisine yardımcı olan birilerinin varlığını bilmesi güzel his doğrusu. Herşey için teşekkür ederim.
Bu hususta bana söylenen başka bi tavsiyeyi sizinle ve tüm forumdaki arkadaşlarla paylaşmak isterim.
Tavsiye şuydu;
Enterprise yi aç. import sihirbazında son noktaya gel ama "SON" u tıklama.SQL Server Profiler ı çalıştır. Sonra enterprise dönüp import işlemini başlat. Böylelikle Profiler de SQL Server ın kullandığı komutları gözlemleyebilirsin.
dendi ve bende öyle yaptım. Bana Profiler dan dönen 5 satırlık değerler şunlardı:
1)
exec sp_oledb_ro_usrname
2)
select collationname(0x1F04D00082)
3)
CREATE TABLE [UYE_TAKIP].[dbo].[Sayfa1$] (
[SICIL_NO] nvarchar (255) NULL,
[BRUT_UCRETI] float NULL,
[KESINTI_YUZDESI] float NULL,
[AIDAT_TUTARI] float NULL
)
4)
exec sp_bcp_dbcmptlevel [UYE_TAKIP] SET FMTONLY ON SELECT * FROM [UYE_TAKIP].[dbo].[Sayfa1$] SET FMTONLY OFF exec [UYE_TAKIP]..sp_tablecollations '[UYE_TAKIP].[dbo].[Sayfa1$]'
5)
insert bulk [UYE_TAKIP].[dbo].[Sayfa1$]("SICIL_NO" nvarchar(255) COLLATE SQL_Latin1_General_CP1254_CI_AS,"BRUT_UCRETI" float,"KESINTI_YUZDESI" float,"AIDAT_TUTARI" float)with(check_constraints)
şimdi bu adımları sırayla inceleyecem ki sonuca ulaşacağımı umuyorum.
Sanırım SQL Server bu işi yaparken sp_oledb_ro_usrname, sp_bcp_dbcmptlevel gibi stored procedurlerini kullanıyo.
Şimdi bunları inleyeceğim.
Herkese kolaylıklar diliyorum.
- emrahkaraarslan
- Üye
- Mesajlar: 243
- Kayıt: 21 Haz 2005 12:28
- Konum: Trabzon
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
merhaba thickreed. bu işi çözersen nasıl çözdüğünü yazarsan faydalı olacağına inanıyorum. çünkü bende bu konuda tablo aktarımlarında baya bir süre beklemem gerekiyor.. kolay gelsin...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
ışığında hiç bir şey kaybetmez.
Mevlana
OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Enterprise Manager arka planda sqlbulkoperations ile apileri kullanarak bir şeyler yapıyor ama hadi hayırlısı. Tahminime göre ram üzerinde bilgileri oluşturup bunları aktarıyor. Bu tamamen safsata da olabilir ama bu konuda bilgi sahibi olan varsa ve destek olursa süper olacak.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Aralarındaki hız farkı korkunç boyutlarda. Bulk Insert metodu sql server'a yapılacak en hızlı kayıt tekniği. Olmazsa ya sabır denilerek yapılır ama maksat bulk insert tekniğini açığa çıkarmak. Bir DB onarma aracı için gerekli olduğundan lazım. Trigger disable olmadan 2 saat süren bir aktarım trigger kapatılarak 15 dk.'ya düşebiliyor. Bulk insertle ise 1 dk bile sürmeden işlem bitebiliyor. Bu yüzden bu konuyu zorlamak gerekiyor diye düşünüyorum.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
hocam tek sql cümlesi yeter bunun için (MS SQL için tabi bu) excel dosyadanki tüm alanları senin oluşturacağın tabloya aktaracak
Kod: Tümünü seç
SELECT * INTO ExcelTablo FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Sayfa1$]
talip türkmen
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
freett yazdı:hocam tek sql cümlesi yeter bunun için (MS SQL için tabi bu) excel dosyadanki tüm alanları senin oluşturacağın tabloya aktaracak
Kod: Tümünü seç
SELECT * INTO ExcelTablo FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Sayfa1$]

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .