Mass kopiering från en databas med en kontroll tabell

gäller för: Azure Data Factory Azure Synapse Analytics

Om du vill kopiera data från ett informations lager i Oracle server, Netezza, Teradata eller SQL Server till Azure Synapse Analytics måste du läsa in stora mängder data från flera tabeller. Normalt måste data partitioneras i varje tabell så att du kan läsa in rader med flera trådar parallellt från en enda tabell. I den här artikeln beskrivs en mall som du kan använda i dessa scenarier.

! Obs! Om du vill kopiera data från ett litet antal tabeller med relativt små data volymer till Azure Synapse Analytics, är det mer effektivt att använda Azure Data Factory kopiera data-verktyget. Mallen som beskrivs i den här artikeln är mer än du behöver för det scenariot.

Om den här lösnings mal len

Den här mallen hämtar en lista över käll databas partitioner som ska kopieras från en extern kontroll tabell. Sedan upprepas det över varje partition i käll databasen och data kopieras till målet.

Mallen innehåller tre aktiviteter:

  • Lookup hämtar listan över att se till att diskpartitioner från en extern kontroll tabell.
  • Med den här listan får du en lista över partitionerna från söknings aktiviteten och upprepar varje partition till kopierings aktiviteten.
  • Kopiera kopierar varje partition från käll databasens lager till mål arkivet.

Mallen definierar följande parametrar:

  • Control_Table_Name är din externa kontroll tabell som lagrar partitionerings listan för käll databasen.
  • Control_Table_Schema_PartitionID är namnet på kolumn namnet i den externa kontroll tabell som lagrar varje PARTITIONS-ID. Kontrol lera att partitions-ID: t är unikt för varje partition i käll databasen.
  • Control_Table_Schema_SourceTableName är din externa kontroll tabell som lagrar varje tabell namn från käll databasen.
  • Control_Table_Schema_FilterQuery är namnet på kolumnen i den externa kontroll tabell som lagrar filter frågan för att hämta data från varje partition i käll databasen. Om du till exempel har partitionerat data per år kan frågan som lagras på varje rad likna "Select * from DataSource WHERE LastModifytime >=" "2015-01-01 00:00:00" "och LastModifytime <=" "2015-12-31 23:59:59.999" ".
  • Data_Destination_Folder_Path är sökvägen till den plats där data kopieras till mål lagret (gäller när det mål du väljer är "fil system" eller "Azure Data Lake Storage gen1").
  • Data_Destination_Container är sökvägen till rotmappen där data kopieras till i mål arkivet.
  • Data_Destination_Directory är katalog Sök vägen under roten där data kopieras till mål lagret.

De sista tre parametrarna, som definierar sökvägen i mål lagret, visas bara om det mål du väljer är filbaserad lagring. Om du väljer Azure Synapse Analytics som mål Arkiv, krävs inte dessa parametrar. Men tabell namnen och schemat i Azure Synapse Analytics måste vara desamma som i käll databasen.

Så här använder du den här lösnings mal len

  1. Skapa en kontroll tabell i SQL Server eller Azure SQL Database för att lagra käll databasens partition lista för Mass kopiering. I följande exempel finns det fem partitioner i käll databasen. Det finns tre partitioner för datasource_table och två för project_table. Kolumnen LastModifytime används för att partitionera data i tabell datasource_table från käll databasen. Frågan som används för att läsa den första partitionen är Select * from datasource_table WHERE LastModifytime >= ' ' 2015-01-01 00:00:00 ' ' och LastModifytime <= ' ' 2015-12-31 23:59:59.999 ' '. Du kan använda en liknande fråga för att läsa data från andra partitioner.

           Create table ControlTableForTemplate
           (
           PartitionID int,
           SourceTableName  varchar(255),
           FilterQuery varchar(255)
           );
    
           INSERT INTO ControlTableForTemplate
           (PartitionID, SourceTableName, FilterQuery)
           VALUES
           (1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''),
           (2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''),
           (3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''),
           (4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'),
           (5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');
    
  2. Gå till samlings kopian från databas mal len. Skapa en ny anslutning till den externa kontroll tabellen som du skapade i steg 1.

    Skapa en ny anslutning till kontroll tabellen

  3. Skapa en ny anslutning till käll databasen som du kopierar data från.

    Skapa en ny anslutning till käll databasen

  4. Skapa en ny anslutning till mål data lagret som du kopierar data till.

    Skapa en ny anslutning till mål arkivet

  5. Välj Använd den här mallen.

  6. Du ser pipelinen, som du ser i följande exempel:

    Granska pipelinen

  7. Välj Felsök, ange parametrarna och välj sedan Slutför.

    Klicka på * * Felsök * *

  8. Du ser resultat som liknar följande exempel:

    Granska resultatet

  9. Valfritt Om du väljer Azure Synapse Analytics som data mål måste du ange en anslutning till Azure Blob Storage för mellanlagring, vilket krävs av Azure Synapse Analytics PolyBase. Mallen genererar automatiskt en container Sök väg för Blob Storage. Kontrol lera om behållaren har skapats efter att pipelinen har körts.

    PolyBase-inställning

Nästa steg