Alıştırma - Tabloları oluşturma, toplu içeri aktarma ve verileri sorgulama

Tamamlandı

Üniversite şu anda verilerini bir dizi virgülle ayrılmış dosyada depoluyor. Bu verileri Azure SQL Veritabanı'na geçirmeniz gerekir.

Bu alıştırmada, SQL Veritabanı hizmetini kullanarak bir veritabanı sunucusu ve tek bir veritabanı oluşturacaksınız. Ardından tablolar oluşturacak ve verileri veritabanına aktaracaksınız. Son olarak, verileri sorgulamak için sorgu düzenleyicisini sqlcmd ve yardımcı programını kullanırsınız.

Var olan virgülle ayrılmış verileri inceleme

  1. Azure Cloud Shell'de aşağıdaki komutu çalıştırarak üniversite sisteminin veri dosyalarını ve uygulama kodunu indirin.

    git clone https://github.com/MicrosoftDocs/mslearn-develop-app-that-queries-azure-sql education
    
  2. Örnek verileri kendi klasörüne taşımak ve klasördeki dosyaları listelemek için aşağıdaki komutları çalıştırın.

    mv ~/education/data ~/educationdata
    cd ~/educationdata
    ls
    

    Bu klasörde üç dosya vardır: courses.csv, modules.csv ve studyplans.csv.

  3. Courses.csv dosyasının içeriğini görüntüleyin.

    cat courses.csv
    

    Dosya, aşağıdaki virgülle ayrılmış verileri içerir. Veriler, üniversitede verilen her bir dersin adından ve kimliğinden oluşur.

    ID,Course
    1,Computer Science
    2,Maths with Computing
    3,Maths with Physics
    4,Computer Science with Physics
    5,Maths with Chemistry
    6,Physics with Chemistry
    7,Maths
    8,Physics
    9,Chemistry
    
  4. Modules.csv dosyasının içeriğini görüntüleyin.

    cat modules.csv
    

    Bu dosyada öğrencilerin derslerin gereksinimlerini tamamlamak için alabilecekleri çeşitli modüller listelenir. Her modülün tanımlama kodu ve adı vardır.

    Module Code,Title
    CS101,Introduction to Computer Science
    CS102,Java Programming
    CS103,Distributed Applications
    CS104,Cloud-based systems
    MA101,Foundations of Applied Maths
    MA102,Advanced Calculus
    MA103,Number Theory
    MA104,String Theory
    PH101,Foundations of Physics
    PH102,Basic Experimental Phyics
    PH103,Basic Theoretical Physics
    PH104,Subatomic Physics
    CH101,Elements of Chemistry
    CH102,Basic Inorganic Chemistry
    CH103,Basic Organic Chemistry
    CH104,Chemical Engineering
    
  5. Studyplans.csv dosyasının içeriğini görüntüleyin.

    cat studyplans.csv
    

    Bu dosya bir öğrencinin dersi başarıyla tamamlamak için geçmesi gereken modülleri belirtir. Sequence sütunu, öğrencinin her modülü hangi sırayla alması gerektiğini gösterir. Örneğin, 1. ders (Bilgisayar Bilimi) için öğrencinin MA101 modülünden önce CS101 modülünü alması gerekir. Verilerin bir bölümü burada gösterilmiştir.

    Course ID,Module Code,Sequence
    1,CS101,1
    1,MA101,2
    1,CS102,3
    1,CS103,4
    1,CS104,5
    2,MA101,1
    2,MA102,2
    2,CS101,3
    2,CS102,4
    2,CS103,5
    3,MA101,1
    3,MA102,2
    3,PH101,3
    3,PH102,4
    3,PH103,5
    ...
    

SQL Veritabanı’nı kullanarak veritabanı sunucusu ve veritabanı oluşturma

Şimdi uygulamanın verilerini depolamak için veritabanını ve sunucuyu oluşturalım.

  1. Korumalı alanı etkinleştirmek için kullandığınız hesapla Azure portalında oturum açın.

  2. Azure portalı menüsündeki Azure hizmetleri'nin altında Kaynak oluştur'u seçin.

    Screenshot of Azure portal menu and Create a resource option.

    Kaynak oluştur bölmesi görüntülenir.

  3. Sol menü bölmesinde Veritabanları'nı seçin ve Popüler Azure hizmetleri'nin altında SQL Veritabanı'ı seçin.

    Screenshot of the Databases and SQL Database options.

    SQL Veritabanı Oluştur bölmesi görüntülenir.

  4. Temel Bilgiler sekmesinde, her ayar için aşağıdaki değerleri girin.

    Ayar Değer
    Proje ayrıntıları
    Abonelik Concierge Aboneliği
    Kaynak Grubu [Sandbox resource group]
    Veritabanı ayrıntıları
    Veritabanı adı Veritabanının benzersiz bir adı olmalıdır. coursedatabaseNNN gibi bir ad kullanmanızı öneririz; burada NNN, rastgele bir sayıdır.
    Sunucu Yeni oluştur bağlantısını seçin ve Yeni sunucu panelinde aşağıdaki tabloda yer alan ayrıntıları girin.
    SQL esnek havuzu kullanmak ister misiniz? No
    İşlem + depolama Genel amaçlı

    Sunucu için her ayar için aşağıdaki değerleri girin.

    Ayar Değer
    Sunucu adı courseserverNNN; burada NNN, veritabanı için seçtiğiniz numaranın aynısıdır
    Sunucu yöneticisi oturum açma bilgileri azuresql
    Password Gereksinimleri karşılayan bir parola girin.
    Parolayı onaylayın Parolanızı onaylayın.
    Konum Central US
  5. Tamam seçeneğini işaretleyin.

  6. İleri: Ağ'ı seçin.

  7. sekmesinde, her ayar için aşağıdaki değerleri girin.

    Ayar Değer
    Ağ bağlantısı
    Bağlantı yöntemi Genel uç nokta
    Güvenlik duvarı kuralları
    Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver Evet
    Mevcut istemci IP adresi ekle Evet
  8. Gözden geçir ve oluştur’u seçin.

  9. Oluştur’u seçin. Devam etmeden önce sunucu ve veritabanının oluşturulmasını bekleyin.

Tabloları oluşturma

Şimdi .csv dosyalarındaki verilerin depolanacağı tabloları oluşturabilirsiniz.

  1. Kaynağa git’i seçin. coursedatabaseNNN için SQL veritabanınız görüntülenir.

  2. Sol menü bölmesinde Sorgu düzenleyicisi (önizleme) öğesini seçin.

    The database page in the Azure portal with the query editor option highlighted.

    coursedatabaseNNN için Sorgu düzenleyicisi bölmesi görüntülenir.

  3. Her ayar için aşağıdaki değerleri girin.

    Ayar Değer
    SQL server kimlik doğrulaması
    Oturum aç azuresql
    Password Bu kullanıcıyı oluştururken kullandığınız parolayı belirtin.

    Dekont

    Veritabanında oturum açarken hata alırsanız, hatada listelenen IP'yi denetleyin ve istemci IP'sine eklenen ip olduğundan emin olun. Genel Bakış>Sunucu güvenlik duvarını ayarla'yı seçerek bunu yapabilirsiniz.

  4. Veritabanı hizmetine bağlanmak için Tamam'ı seçin.

  5. Sorgu 1 bölmesinde aşağıdaki Transact-SQL (T-SQL) deyimini girin ve Çalıştır'ı seçin. Bu deyim ders bilgilerini barındırmak için yeni bir tablo oluşturur. Deyimin hatasız çalıştırıldığını doğrulayın.

    CREATE TABLE Courses
    (
        CourseID INT NOT NULL PRIMARY KEY,
        CourseName VARCHAR(50) NOT NULL
    )
    

    The Query editor window in the Azure portal. The user has entered a statement to create the Courses table.

  6. Modülleri barındıracak bir tabloyu oluşturmak için var olan deyimi aşağıdaki deyimle değiştirin. Çalıştır'ı seçin ve deyimin hatasız çalıştırıldığını doğrulayın.

    CREATE TABLE Modules
    (
        ModuleCode VARCHAR(5) NOT NULL PRIMARY KEY,
        ModuleTitle VARCHAR(50) NOT NULL
    )
    
  7. deyimini değiştirerek adlı StudyPlansbir tablo oluşturun ve çalıştır'ı seçin.

    CREATE TABLE StudyPlans
    (
        CourseID INT NOT NULL,
        ModuleCode VARCHAR(5) NOT NULL,
        ModuleSequence INT NOT NULL,
        PRIMARY KEY(CourseID, ModuleCode)
    )
    
  8. Veritabanı penceresinde, araç çubuğundaki Yenile simgesini seçin. Tablolar'ı genişletin ve her tabloyu sırayla genişletin. Her tablonun sütunları ve birincil anahtarıyla birlikte üç tabloyu (dbo.Courses, dbo.Modulesve dbo.StudyPlans) görmeniz gerekir.

    Dekont

    dbo, veritabanı sahibini ifade eder. Bu, veritabanındaki varsayılan şemadır. Üç tablo da bu şemayla oluşturulmuştur.

    The database window in the Azure portal, showing the tables and columns.

Verileri içeri aktarma

  1. Cloud Shell'e dönün ve klasörde olduğunuzdan educationdata emin olun.

    cd ~/educationdata
    
  2. Sonraki adımlarda kullandığınız değişkenleri oluşturun. NNN öğesini veritabanınız ve sunucunuz için kullandığınız numarayla değiştirin.

    export DATABASE_NAME=coursedatabaseNNN
    export DATABASE_SERVER=courseserverNNN
    export AZURE_USER=azuresql
    export AZURE_PASSWORD=[enter your password]
    
  3. bcp Yardımcı programını çalıştırarak veritabanındaki tablonun şemasından dbo.Courses bir biçim dosyası oluşturun. Biçim dosyası, verilerin karakter biçiminde () ve virgülle (-c-t,) ayrıldığını belirtir.

    bcp "[$DATABASE_NAME].[dbo].[courses]" format nul -c -f courses.fmt -t, -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD
    
  4. Kod düzenleyicisinde dosyasını açın courses.fmt. Önceki komut tarafından oluşturulan biçim dosyası.

    code courses.fmt
    

    Dosya şu şekilde görünmelidir:

    14.0
    2
    1       SQLCHAR             0       12      ","    1     CourseID                                     ""
    2       SQLCHAR             0       50      "\n"   2     CourseName                                   SQL_Latin1_General_CP1_CI_AS
    
  5. Dosyayı gözden geçirin. Virgülle ayrılmış dosyanın ilk sütunundaki veriler tablonun sütununa CourseIDdbo.Courses gider. İkinci alan sütuna CourseName gider. İkinci sütun, karakter tabanlıdır ve bununla ilişkilendirilmiş bir harmanlama vardır. Dosyadaki alan ayırıcısının virgül olması beklenir. Satır sonlandırıcı (ikinci alandan sonra) bir yeni satır karakteri olmalıdır. Gerçek dünya senaryosunda verileriniz bu kadar düzgün düzenlenmeyebilir. Sütunlardan farklı bir düzende farklı alan ayırıcıları ve alanlarınız olabilir. Bu durumda bu öğeleri alan bazında değiştirmek için biçim dosyasını düzenleyebilirsiniz. Düzenleyiciyi kapatmak için Ctrl+Q tuşlarına basın.

  6. Dosyadaki courses.csv verileri değiştirilen courses.fmt dosya tarafından belirtilen biçimde içeri aktarmak için aşağıdaki komutu çalıştırın. -F 2 bayrağı, bcp yardımcı programına veri dosyasındaki 2. satırdan verileri içeri aktarmaya başlamasını bildirir. İlk satır üst bilgileri içerir.

    bcp "[$DATABASE_NAME].[dbo].[courses]" in courses.csv -f courses.fmt -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD -F 2
    

    bcp yardımcı programının dokuz satırı içeri aktardığını ve herhangi bir hata bildirmediğini doğrulayın.

  7. Tablonun verilerini dosyadan içeri aktarmak için aşağıdaki işlem dizisini dbo.Modulesmodules.csv çalıştırın.

    1. Bir biçim dosyası oluşturun.

      bcp "[$DATABASE_NAME].[dbo].[modules]" format nul -c -f modules.fmt -t, -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD
      
    2. Dosyadaki modules.csv verileri veritabanındaki dbo.Modules tabloya aktarın.

      bcp "[$DATABASE_NAME].[dbo].[modules]" in modules.csv -f modules.fmt -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD -F 2
      

      Bu komutun 16 satırı içeri aktardığını doğrulayın.

  8. Tablo verilerini dosyadan içeri aktarmak için aşağıdaki işlem dizisini dbo.StudyPlans gerçekleştirin studyplans.csv .

    1. Bir biçim dosyası oluşturun.

      bcp "[$DATABASE_NAME].[dbo].[studyplans]" format nul -c -f studyplans.fmt -t, -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD
      
    2. Dosyadaki studyplans.csv verileri veritabanındaki dbo.StudyPlans tabloya aktarın.

      bcp "[$DATABASE_NAME].[dbo].[studyplans]" in studyplans.csv -f studyplans.fmt -S "$DATABASE_SERVER.database.windows.net" -U $AZURE_USER -P $AZURE_PASSWORD -F 2
      

      Bu komutun 45 satırı içeri aktardığını doğrulayın.

Veritabanındaki verileri sorgulama

  1. Azure portalına geri dönün.

  2. Azure portalı menüsünde SQL veritabanları'nı seçin.

  3. SQL veritabanları bölmesinde coursedatabaseNNN öğesini seçin. coursedatabaseNNN bölmesi görüntülenir.

  4. Sol menü bölmesinde Sorgu düzenleyicisi'ni seçin. coursedatabaseNNN için Sorgu düzenleyicisi bölmesi görüntülenir.

  5. Her ayar için aşağıdaki değerleri girin.

    Ayar Değer
    SQL server kimlik doğrulaması
    Oturum aç azuresql
    Password Bu kullanıcının parolasını girin.
  6. Veritabanı hizmetine bağlanmak için Tamam'ı seçin.

  7. Sorgu 1 bölmesinde aşağıdaki T-SQL deyimini girin ve Çalıştır'ı seçin.

    SELECT * FROM dbo.Courses
    

    Bu deyim verileri tablodan dbo.Courses alır. Sonuç penceresinde dokuz satır görüntüleniyor olmalıdır.

    Screenshot of the query editor in the Azure portal, showing the data retrieved from the Courses table.

  8. Sorguyu aşağıda gösterildiği gibi değiştirin ve Çalıştır'ı seçin.

    SELECT * FROM dbo.Modules
    

    Bu kez Sonuçlar penceresinde modülleri görüyor olmalısınız. 16 satır vardır.

  9. Cloud Shell'e dönün ve veritabanına bağlanmak için aşağıdaki komutu çalıştırın.

    sqlcmd -S "$DATABASE_SERVER.database.windows.net" -d "$DATABASE_NAME" -U $AZURE_USER -P $AZURE_PASSWORD
    
  10. 1> İstemde, tablodan verileri dbo.StudyPlans getirmek için aşağıdaki T-SQL komutunu çalıştırın.

    SELECT * FROM StudyPlans;  
    GO
    

    Bu sorgu 45 satır döndürmelidir.

  11. 1> İstemde, sqlcmd yardımcı programını kapatmak için girinexit.

SQL Veritabanı’nı kullanarak tek bir veritabanı oluşturdunuz. Daha sonra tablolar oluşturmak için Azure portalındaki sorgu düzenleyicisini kullandınız. Ardından bir dizi virgülle ayrılmış veri dosyasından verileri karşıya yüklemek için bcp yardımcı programını kullandınız. Son olarak, Azure portalında sorgu düzenleyicisinden ve Cloud Shell'de sqlcmd yardımcı programından veritabanındaki tablolar üzerinde sorgular çalıştırdınız.