Sdílet prostřednictvím


Hromadné kopírování dat pomocí bcp na SQL Server v Linuxu

platí pro:SQL Server – Linux

Tento článek ukazuje, jak pomocí nástroje bcp hromadně kopírovat data mezi instancí SQL Serveru v Linuxu a datovým souborem v uživatelském formátu.

K importu velkého počtu řádků do tabulek SQL Serveru nebo k exportu dat z tabulek SQL Serveru do datových souborů můžete použít bcp. Kromě použití s možností dotazování bcp nevyžaduje žádné znalosti jazyka Transact-SQL. Nástroj příkazového řádku bcp funguje s Microsoft SQL Serverem běžícím místně nebo v cloudu, v Linuxu, Windows nebo Dockeru a Azure SQL Database a Azure Synapse Analytics.

V tomto článku se dozvíte, jak:

  • Import dat do tabulky pomocí příkazu bcp in
  • Export dat z tabulky pomocí příkazu bcp out

Instalace nástrojů příkazového řádku SQL Serveru

bcp je součástí nástrojů příkazového řádku SQL Serveru, které nejsou automaticky nainstalovány s SQL Serverem v Linuxu. Pokud jste na počítači s Linuxem ještě nenainstalovali nástroje příkazového řádku SQL Serveru, musíte je nainstalovat. Další informace o instalaci nástrojů získáte tak, že v následujícím seznamu vyberete distribuci Linuxu:

  • Red Hat Enterprise Linux (RHEL)
  • Ubuntu
  • SUSE Linux Enterprise Server (SLES)

Import dat pomocí bcp

V tomto kurzu vytvoříte ukázkovou databázi a tabulku v místní instanci SQL Serveru (localhost) a pak použijete bcp k načtení do ukázkové tabulky z textového souboru na disku.

Vytvoření ukázkové databáze a tabulky

Začněme vytvořením ukázkové databáze s jednoduchou tabulkou, která se používá ve zbytku tohoto kurzu.

  1. V linuxovém poli otevřete příkazový terminál.

  2. Do okna terminálu zkopírujte a vložte následující příkazy. Tyto příkazy používají nástroj příkazového řádku sqlcmd k vytvoření ukázkové databáze (BcpSampleDB) a tabulky (TestEmployees) v místní instanci SQL Serveru (localhost). Nezapomeňte před spuštěním příkazů nahradit username a <password>.

Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.

Vytvořte databázi BcpSampleDB:

sqlcmd -S localhost -U sa -P <password> -Q "CREATE DATABASE BcpSampleDB;"

Vytvořte tabulku TestEmployees v databázovém BcpSampleDB:

sqlcmd -S localhost -U sa -P <password> -d BcpSampleDB -Q "CREATE TABLE TestEmployees (Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, Name NVARCHAR(50), Location NVARCHAR(50));"

Vytvoření zdrojového datového souboru

Zkopírujte a vložte následující příkaz do okna terminálu. Pomocí integrovaného příkazu cat vytvoříme ukázkový textový datový soubor se třemi záznamy a uložíme ho do vašeho domovského adresáře jako ~/test_data.txt. Pole v záznamech jsou oddělena čárkou.

cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF

Spuštěním následujícího příkazu v okně terminálu můžete ověřit, že se datový soubor vytvořil správně:

cat ~/test_data.txt

V okně terminálu by se mělo zobrazit toto:

1,Jared,Australia
2,Nikita,India
3,Tom,Germany

Import dat ze zdrojového datového souboru

Do okna terminálu zkopírujte a vložte následující příkazy. Tento příkaz používá bcp pro připojení k místní instanci SQL Serveru (localhost) a importuje data z datového souboru (~/test_data.txt) do tabulky (TestEmployees) v databázi (BcpSampleDB). Nezapomeňte před spuštěním příkazů nahradit uživatelské jméno a <password>.

bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t  ','

Tady je stručný přehled parametrů příkazového řádku, které jsme použili s bcp v tomto příkladu:

  • -S: určuje instanci SQL Serveru, ke které se má připojit.
  • -U: Určuje přihlašovací ID použité pro připojení k SQL Serveru.
  • -P: určuje heslo pro přihlašovací ID.
  • -d: určuje databázi, ke které se má připojit.
  • -c: Provádí operace pomocí datového typu znaku.
  • -t: určuje ukončovací znak pole. Jako ukončovací znak pole pro záznamy v datovém souboru používáme comma.

Poznámka

V tomto příkladu neurčujeme vlastní ukončovací znak řádku. Řádky v textovém datovém souboru byly správně ukončeny znakem newline, když jsme už dříve použili příkaz cat k vytvoření datového souboru.

Úspěšné importování dat můžete ověřit spuštěním následujícího příkazu v okně terminálu. Nezapomeňte před spuštěním příkazu nahradit username a <password>.

sqlcmd -S localhost -d BcpSampleDB -U sa -P <password> -I -Q "SELECT * FROM TestEmployees;"

Mělo by se zobrazit následující výsledky:

Id          Name                Location
----------- ------------------- -------------------
          1 Jared               Australia
          2 Nikita              India
          3 Tom                 Germany

Export dat pomocí bcp

V tomto kurzu použijete bcp k exportu dat z ukázkové tabulky, kterou jsme vytvořili dříve do nového datového souboru.

Do okna terminálu zkopírujte a vložte následující příkazy. Tyto příkazy používají nástroj bcp příkazového řádku k exportu dat z tabulky TestEmployees v databázi BcpSampleDB do nového datového souboru s názvem ~/test_export.txt. Nezapomeňte před spuštěním příkazu nahradit uživatelské jméno a <password>.

bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <password> -d BcpSampleDB -c -t ','

Správné exportování dat můžete ověřit spuštěním následujícího příkazu v okně terminálu:

cat ~/test_export.txt

V okně terminálu by se mělo zobrazit toto:

1,Jared,Australia
2,Nikita,India
3,Tom,Germany