Tabloları oluşturma, toplu içeri aktarma ve verileri sorgulama

Tamamlandı

Üniversiteye şu anda metin dosyalarında depolanan verileri depolamak için bir konum gerekiyor. Verilere erişilebilmesini kolaylaştırmak için verileri ilişkisel hale getirmek istiyorlar. Bu veriler için depolama hizmeti olarak Azure SQL Veritabanı'nda tek veritabanı seçtiler. SQL Veritabanına göz atıp verilerin nasıl karşıya yüklenip sorgulanacağını görelim.

Azure portalını kullanarak tek bir veritabanı oluşturma

SQL Veritabanı, Microsoft SQL Server Veritabanı Altyapısı'nın en son kararlı sürümünü temel alan ilişkisel veritabanı hizmetidir. SQL veritabanı, güvenilir ve yüksek oranda güvenli, kullanımı kolay ve yüksek performanslı bir veritabanıdır. İstediğiniz programlama dilinde yeni uygulamalar, web siteleri ve mikro hizmetler oluşturmak için SQL Veritabanı kullanabilirsiniz ve altyapıyı yönetmeniz gerekmez.

Azure portalı üzerinden veya Azure PowerShell veya CLI kullanarak tek bir veritabanı oluşturabilirsiniz.

  1. Azure portalı menüsünden, Kaynak oluştur'u seçin.

    Screenshot of Azure portal menu and Create a resource option.

  2. Veritabanları'nı ve ardından SQL Veritabanı'nı seçin.

    Screenshot of the Databases and SQL Database options.

  3. CLI kullanmak için ve az sql db create komutlarını az sql server create çalıştırın.

  4. PowerShell'i kullanmak için ve New-AzSqlDatabase komutlarını New-AzSqlServer çalıştırın.

Tek bir veritabanı oluştururken veritabanını yönetmek için kullanılacak sunucuyu belirtmeniz istenir. Yeni bir sunucu oluşturabilir veya var olan bir sunucuyu kullanabilirsiniz.

Yeni bir sunucu oluşturduğunuzda ve SQL kimlik doğrulamasını kullanmayı seçtiğinizde, bir sunucu yöneticisi kullanıcı adı ve parolası belirtmeniz istenir. Bu kimlik bilgilerini kullanarak sunucuya bağlanarak yönetim görevlerini gerçekleştirin ve sunucunun denetlediğini veritabanlarına erişin. SQL Veritabanı, Microsoft Entra kimlik doğrulamayı da destekler. Ayrıca hem SQL hem de Microsoft Entra kimlik doğrulamasını kullanmayı seçebilirsiniz. Ancak, yeni bir sunucu oluştururken her zaman bir yönetici ayarlamanız veya bir yönetici hesabı oluşturmanız gerekir. Ardından, Microsoft Entra Id'de depolanan hesaplara erişim verin.

Kötü amaçlı olabilecek işlemleri engellemek için her veritabanı sunucusu bir güvenlik duvarıyla korunur. Diğer Azure hizmetlerine güvenlik duvarını açabilirsiniz. Ayrıca IP adresine veya adres aralığına göre diğer bilgisayarlara erişimi de seçmeli olarak etkinleştirebilirsiniz. SQL Veritabanı ayrıca şunları yapmanızı sağlayan gelişmiş veri güvenliği de sağlar:

  • Tablolardaki tek tek sütunlarda veri duyarlılığını belirtme.
  • Veritabanlarınızın güvenlik açığını değerlendirme ve gerekli düzeltme adımlarını uygulama.
  • Bir tehdit algılandığında uyarı gönderme.

Kaynakları, ayrılacak bellek, G/Ç ve CPU kaynaklarını belirten sanal çekirdek (sanal çekirdek) modelini kullanarak yapılandırabilirsiniz. İşlem ve depolama kaynaklarını bağımsız olarak ölçeklendirebilirsiniz. Alternatif olarak, kaynakları veritabanı işlem birimi (DTU) cinsinden de atayabilirsiniz. DTU, karşılaştırmalı işlem yapmak için gereken kaynakların ayarlanmış maliyet ölçümüdür.

Birden çok veritabanınız varsa ve veritabanlarının kaynak gereksinimleri dalgalanma gösteriyorsa SQL elastik havuzunu kullanabilirsiniz. Bu özellik, bir kaynak havuzunun isteğe bağlı olarak havuza alınmış veritabanları arasında paylaşılmasını sağlar.

Veritabanı oluşturduğunuzda, verilerin nasıl harmanleneceğini de belirtirsiniz. Harmanlama, veritabanının verileri sıralamak ve karşılaştırmak için kullandığı kuralları tanımlar. Ayrıca metin verileri için kullanılacak karakter kümesini de belirtir. Veritabanını oluşturduktan sonra harmanlamayı değiştirebilirsiniz, ancak veritabanında veriler olduktan sonra bunu değiştirmemek en iyisidir.

Tablo oluştur

Tablo oluşturmak için şu araçlardan herhangi birini kullanabilirsiniz:

  • Azure portalındaki sorgu düzenleyici
  • sqlcmd yardımcı programı ve Cloud Shell
  • SQL Server Management Studio

Hangi aracı seçerseniz seçin, Transact-SQL (T-SQL) komutunu kullanarak CREATE TABLE tabloyu tanımlarsınız. SQL Veritabanı, tablolarda birincil anahtarları, yabancı anahtarları, dizinleri ve tetikleyicileri destekler. Aşağıdaki örnek kod, bir çift ilişkili tablo ve bir kümelenmemiş dizin oluşturur. Bu komutları toplu olarak sorgu düzenleyicisinde veya sqlcmd yardımcı programında çalıştırabilirsiniz.

CREATE TABLE MyTable
(
    MyColumn1 INT NOT NULL PRIMARY KEY,
    MyColumn2 VARCHAR(50) NOT NULL
);

CREATE TABLE MyTable2
(
    AnotherColumn1 INT NOT NULL,
    AnotherColumn2 INT NOT NULL REFERENCES MyTable,
    AnotherColumn3 VARCHAR(50) NULL,
    PRIMARY KEY (AnotherColumn1, AnotherColumn2)
);

CREATE INDEX cci ON MyTable2(AnotherColumn3);

Azure portalında sorgu düzenleyicisine erişmek için, veritabanınızın sayfasına gidin ve Sorgu düzenleyicisi'ni seçin. Kimlik bilgileriniz istenir. Yetkilendirme türü’nü SQL Server kimlik doğrulaması olarak ayarlayabilir ve veritabanını oluştururken ayarladığınız kullanıcı adı ve parolayı girebilirsiniz. Alternatif olarak, Active Directory parola kimlik doğrulamasını seçebilir ve Yetkili bir kullanıcının kimlik bilgilerini Microsoft Entra Id'de sağlayabilirsiniz. Active Directory çoklu oturum açma özelliği etkinleştirildiyse, Azure kimliğinizi kullanarak bağlanabilirsiniz.

The SQL Database sign-in page in the Azure portal.

Sorgu bölmesine T-SQL kodunuzu girer ve çalıştırmak için Çalıştır'ı seçersiniz. T-SQL deyimi bir sorguysa, döndürülen tüm satırlar Sonuçlar bölmesinde görünür. İletiler bölmesinde, döndürülen satır sayısı veya oluşan hatalar gibi bilgiler görüntülenir:

The query editor in the Azure portal with the various panes highlighted.

sqlcmd yardımcı programını kullanmak için Cloud Shell'e gidin ve aşağıdaki komutu çalıştırın. <server> öğesini oluşturduğunuz veritabanı sunucusunun adıyla, <database> öğesini veritabanınızın adıyla ve <user name> ile <password> öğelerini de kimlik bilgilerinizle değiştirin.

sqlcmd -S <server>.database.windows.net -d <database> -U <username> -P <password>

Oturum açma komutu başarılı olursa bir 1> istem görürsünüz. T-SQL komutlarını birkaç satıra girebilir ve sonra bunları çalıştırmak için yazabilirsiniz GO .

Bcp ile verileri toplu içeri aktarma

Microsoft, verileri SQL veritabanınıza yüklemek için kullanabileceğiniz çeşitli araçlar sağlar:

  • SQL Server Integration Services (SSIS)
  • SQL BULK INSERT deyimi
  • Toplu Kopyalama Programı (bcp) yardımcı programı

bcp yardımcı programı çoğunlukla kullanışlı olduğundan ve verileri birden çok tabloya içeri aktarmak için kolayca betikleştirilebildiğinden kullanılır. bcp yardımcı programı, veritabanındaki verileri içeri ve dışarı aktarmak için kullanabileceğiniz bir komut satırı yardımcı programıdır. Verileri içeri aktarmak için bcp yardımcı programına şu üç şey gerekir:

  • Karşıya yüklenecek kaynak veriler.
  • Hedef veritabanında var olan bir tablo.
  • Verilerin biçimini ve verilerin hedef tablodaki sütunlara nasıl eşlendiğini tanımlayan bir biçim dosyası.

bcp yardımcı programı esnektir. Kaynak veriler hemen her yapılandırılmış biçimde olabilir. Biçim dosyası, verilerin düzenini ve verilerin ikili mi yoksa karakter tabanlı mı olduğunu gösterir. Ayrıca her öğenin türünü ve uzunluğunu ve verilerin nasıl ayrıldığını belirtir. Biçim dosyası dosyadaki her öğenin tablodaki sütunla nasıl eşleneceğini de belirtir. Bu dosyanın içeriklerinin doğru şekilde tanımlanması önemlidir. Aksi takdirde, verileriniz içeri aktarılmayabilir veya veriler yanlış sütunlara okunabilir.

Örneğin, mydata.csv dosyasında aşağıdaki verileriniz bulunduğunu ve bu verileri daha önce oluşturduğumuz MyTable tablosuna içeri aktarmak istediğinizi varsayın.

Column1,Column2
99,some text
101,some more text
97,another bit of text
87,yet more text
33,a final bit of text

İlk satır, tablodaki sütunlarla aynı olmayan alan adlarını içerir. Veriler virgülle ayrılmıştır ve her satır yeni satır karakteriyle sonlandırılır. Dosyadaki sütunların sırası tablodakinden farklı olabilir. Bu örnekte, aşağıda gösterildiği gibi tablodaki ilk sütun sayısaldır ve ikinci sütun da dizedir:

CREATE TABLE MyTable
(
    MyColumn1 INT NOT NULL PRIMARY KEY,
    MyColumn2 VARCHAR(50) NOT NULL
);

İçe aktarmak üzere bir biçim dosyası oluşturmak için bcp komutunu kullanabilirsiniz. bcp komutu, veritabanındaki hedef tablonun şemasına dayalı bir biçim dosyası oluşturabilir. Ardından bu dosyayı kaynak dosyadaki verilerle eşleşecek şekilde düzenleyebilirsiniz.

Aşağıdaki komutu çalıştırarak bir biçim dosyası oluşturun. Açılı ayraç içindeki öğeleri kendi veritabanınız, sunucunuz, kullanıcı adınız ve parolanızla değiştirin:

bcp <database>.dbo.mytable format nul -c -f mytable.fmt -t, -S <server>.database.windows.net -U <username> -P <password>

bcp yardımcı programının işlevlerini denetleyen çeşitli parametreleri vardır. Şunları belirtebilirsiniz:

  • Hedef tablo (<database>.<schema>.<table>)
  • İçeri aktarılacak veriler ve verilerle ilgili ayrıntılar (format nul -c -f mytable.fmt -t,)
  • Veritabanınız (-S <server>.database.windows.net -U <username> -P <password>) için bağlantı ayrıntıları

Yardımcı programın tam söz dizimi ve komut satırı parametreleri için yardım belgelerine bakın.

komutu, aşağıdakine benzer içeriği olan mytable.fmt biçim dosyasını oluşturur:

14.0
2
1       SQLCHAR             0       12      ","    1     MyColumn1                                ""
2       SQLCHAR             0       50      "\n"   2     MyColumn2                                SQL_Latin1_General_CP1_CI_AS

İlk satır, SQL Veritabanı’nın iç sürüm numarasını gösterir. İkinci satır, kaynak tablodaki sütun sayısını gösterir. Son iki satır, kaynak dosyadaki verilerin bu sütunlarla nasıl eşleneceğini belirtir.

Her iki satır da tablodaki sütun numarası olan bir sayıyla başlar. İkinci alan (SQLCHAR), verileri içeri aktarırken bu biçim dosyasını kullandığımızda kaynak dosyadaki her alanın karakter verileri içerdiğini belirtir. yardımcı bcp programı, bu verileri tablodaki ilgili sütun için uygun türe dönüştürmeyi dener. Sonraki alan (12 ve 50) veritabanındaki her sütunda yer alan verilerin uzunluğudur. Bu alanı değiştirmeyin! Sonraki öğeler ("," ve "\n") içinde "," kaynak dosyadaki alan ayırıcısı ve "\n" ise yeni satır karakteridir. Sonraki sütun kaynak dosyadaki alan sayısıdır. İkinci ve son alan (MyColumn1 ve MyColumn2), veritabanındaki sütunun adıdır. Son alan, kullanılacak harmanlama olup yalnızca veritabanındaki karakter verileri için geçerlidir.

Kaynak dosyadaki alanların veritabanındaki sütunlardan farklı düzende olduğunu unutmayın. Bu nedenle biçim dosyasını düzenlemeniz ve alan numaralarını aşağıda gösterildiği gibi değiştirmeniz gerekir:

14.0
2
1       SQLCHAR             0       12      ","    2     MyColumn1                                ""
2       SQLCHAR             0       50      "\n"   1     MyColumn2                                SQL_Latin1_General_CP1_CI_AS

Kaynak dosyadaki 2. alandaki veriler veritabanındaki ilk sütuna eşlenir. 1. alan ikinci sütuna eşlenir.

Artık bcp komutunu aşağıda gösterildiği gibi verileri içeri aktarmak için kullanabilirsiniz:

bcp <database>.dbo.mytable in mydata.csv -f mytable.fmt -S <server>.database.windows.net -U <username> -P <password> -F 2

in bayrağı, verileri içeri aktarmak için bcp kullandığımızı belirtir. Veritabanından bir dosyaya veri aktarmak için out kullanabilirsiniz. -F 2 bayrağı içeri aktarma işleminin kaynak dosyanın 2. satırında başlayacağını gösterir. Unutmayın; ilk satır, verileri değil üst bilgileri içerir.

Komut başarıyla çalıştırılmalı ve şu örneklere benzer iletiler döndürmelidir:

Starting copy...

5 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 46     Average : (108.7 rows per sec.)

Çıktıdaki önemli satır "5 satır kopyalandı"dır. Kaynak dosyada içeri aktarılan verileri içeren satır sayısı. Bu sayı farklıysa (veya 0 ise) biçim dosyanız yanlış olabilir.

Verileri sorgulama

Verileri sorgulayarak içeri aktarma işleminin başarılı olduğunu doğrulayın. Azure portalındaki sorgu düzenleyicisini kullanabilirsiniz. Alternatif olarak, bir komut satırından veritabanına bağlanmak için sqlcmd yardımcı programını da kullanabilirsiniz. Her iki durumda da şunun gibi bir SELECT deyimi çalıştırırsınız:

SELECT *
FROM MyTable;

Aşağıdaki sonuçları görmeniz gerekir.

The query editor in the Azure portal shows the results of a query.