Importera data från MSSQL Server

Under åren har Microsoft förbättrat kraftigt hur Excel integreras med andra databaser, inklusive naturligtvis Microsoft SQL Server. Varje version har sett många förbättringar för att underlätta funktionaliteten till den punkt där extraherade data från många källor är lika enkla som det blir.

I det här exemplet extraherar vi data från en SQL Server (2016) men det kommer lika bra med andra versioner. Följ dessa steg för att extrahera data:

Från fliken Data klickar du på rullgardinsmenyn Hämta data som visas i figur 1 nedan och välj avsnittet Från databas och slutligen från SQL Server-databas som visar en inmatningspanel för att ange servern, databasen och referenser.

Välj SQL Server för din datakälla |

SQL Server-databasanslutningen och frågegränssnittet som visas i figur-2 tillåter oss att ange namnet på servern och eventuellt den databas där data vi behöver lagras. Om du inte anger databasen, i nästa steg måste du fortfarande välja en databas, så jag rekommenderar starkt att du går in i en databas här för att spara dig själv de extra stegen. Hursomhelst måste du ange en databas.

Ange anslutningsinformation för att ansluta servern |

Eller skriv en fråga genom att klicka på Avancerade alternativ för att utvidga den anpassade frågesektionen som visas i figur 3 nedan. Även om frågefältet är grundläggande, vilket innebär att du bör använda SSMS eller en annan frågeställningsredigerare för att förbereda din fråga om den är blygsam komplex eller om du behöver testa den innan du använder den här, kan du klistra in alla giltiga T-SQL-frågor som returnerar en resultatuppsättning. Det betyder att du kan använda detta för INSERT, UPDATE eller DELETE SQL-operationer.

  • Ett par ytterligare information om de tre alternativen under frågefältet. Dessa är " Inkludera relationskolumner", " Navigera full hierarki" och " Aktivera SQL Server failover-stöd" . Av de tre tycker jag att den första är den mest användbara och är alltid aktiverad som standard.

  • Alternativet " Inkludera relationskolumner " säger SQL Server att automatiskt inkludera alla kolumner i en annan tabell som har en relation med någon av kolumnerna i tabellerna som ingår i frågan.
  • Navigera i full hierarki utvidgar trädvyn för tabellerna och kolumnerna som ingår i frågan
  • III. Aktivera SQL Server failover- stöd garanterar att serveranslutningen misslyckas eller om det finns för många anslutningar på en server, kommer du anslutningen automatiskt att växla till en annan anslutning / server i klustret. Det här alternativet är bara användbart om du har en SQL Server-gård som är konfigurerad som ett kluster med failover.

Exportera data till Microsoft SQL Server

Det är väldigt lätt att extrahera data från en databas som MSSQL, men att ladda upp dessa data är lite mer komplicerat. För att ladda upp till MSSQL eller någon annan databas måste du antingen använda VBA, JavaScript (2016 eller Office365) eller använda ett externt språk eller skript. Det enklaste enligt min mening är att använda VBA eftersom det är fristående i Excel.

I grund och botten måste du ansluta till en databas, förutsatt att du naturligtvis har "skriva" (infoga) behörighet på databasen och tabellen, sedan

  1. Skriv en infogningsfråga som laddar upp varje rad i ditt datasæt (det är lättare att definiera en Excel-tabell - inte en datatabell).
  2. Namnge tabellen i Excel
  3. Anslut VBA-funktionen till en knapp eller makro

Aktivera utvecklarläge

Därefter öppnar du VBA-redigeraren från fliken Utvecklare för att lägga till VBA-kod för att välja datasätt och ladda upp till SQL Server.

 Sub UploadToDatabase () Dim-anslutning som ADODB.connection Dim-kommando Som ADODB.command Dim-fråga Som String Dim xlSheet Som arbetsblad Dim recordset Som ADODB.recordset Ställ in xlSheet = ActiveSheet 'Om du använder användarnamn och lösenord (inte din Windows-inloggning)' .Öppna "Provider = SQLOLEDB;" & _ '"Datakälla = The_Name_of_your_Server;" & _ '"Initial Catalog = Autzen2200;" & _ '"Användar-ID = användare1; Lösenord = pass1"' eller 'Om du använder Windows-anslutningsanslutning. Öppna "Provider = SQLOLEDB;" & _ "Datakälla = The_Name_of_your_Server;" & _ "Initial Catalog = Autzen2200;" & _ "Integrerad säkerhet = SSPI;" query = "INSERT IN your_SQL_table_name" & _ "SELECT * from your_excel_table_name" If anslutning.State = adStateOpen Sedan command.CommandType = adCmdText command.CommandText = query command.ActiveConnection = anslutning 'Execute once and display ...' Set recordset = command .Execute 'ELLER med inget resultat inställt kommando.Execute End If recordset.Close anslutning.Close Ställ anslutning = Nothing Set kommando = Ingenting Ange recordset = Nothing End Sub 

Notera:

Fråga = “INSERT IN your_SQL_table_name” & _ “SELECT * from your_excel_table_name”

Att använda denna metod antar att det är enkelt att alla kolumner (antal och namn) matchar antalet kolumner i databastabellen och har samma namn. Annars måste du lista de specifika kolumnnamnen, som:

Fråga = “INSERT IN your_SQL_table_name (column1, column2, column3, etc.)” & _

“VÄLJ kolumn1, kolumn2, kolumn3 från ditt_excel_tabellnamn”

Om tabellen inte finns kan du exportera data och skapa tabellen med en enkel fråga på följande sätt:

Fråga = “VÄLJ * I din_nya_tabell FRÅN excel_tabellnamn”

Eller

Fråga = “VÄLJ col1, col2, col3 IN I din_nya_tabell FRÅN excel_table_name”

Det första sättet skapar du en kolumn för varje kolumn i Excel-tabellen. Det andra alternativet låter dig välja alla kolumner efter namn eller en delmängd av kolumnerna från Excel-tabellen.

Dessa tekniker är det mycket grundläggande sättet att importera och exportera data till Excel. Att skapa tabeller kan bli mer komplicerat om du kan lägga till primära nycklar, index, begränsningar, triggers och så vidare, men är ett annat ämne.

Detta designmönster kan användas för andra databaser liksom MySQL eller Oracle. Du behöver bara ändra drivrutinen för rätt databas.

Den här artikeln är korrekt och sant efter bästa författares kunskap. Innehållet är endast för informations- eller underhållningsändamål och ersätter inte personlig rådgivning eller professionell rådgivning i affärs-, finansiella, juridiska eller tekniska frågor.

2019 Kevin Languedoc