Megosztás:


Adatok tömeges másolása bcp-vel linuxos SQL Serverre

A következőkre vonatkozik:SQL Server Linux rendszeren

Ez a cikk bemutatja, hogyan használhatja a bcp segédprogramot az adatok tömeges másolására linuxos SQL Server-példány és egy felhasználó által megadott formátumú adatfájl között.

A bcp használatával nagy számú sort importálhat SQL Server-táblákba, vagy adatokat exportálhat SQL Server-táblákból adatfájlokba. Kivéve, ha a lekérdezési beállítással használják, bcp nem igényel ismereteket a Transact-SQL-ről. A bcp parancssori segédprogram a Microsoft SQL Serverrel működik, amely a helyszínen vagy a felhőben, Linuxon, Windowson vagy Dockeren, valamint az Azure SQL Database-ben és az Azure Synapse Analyticsben fut.

Ez a cikk bemutatja, hogyan:

  • Adatok importálása táblába a bcp in paranccsal
  • Adatok exportálása táblázatból a bcp out paranccsal

Az SQL Server parancssori eszközeinek telepítése

bcp az SQL Server parancssori eszközeinek része, amelyek nincsenek automatikusan telepítve linuxos SQL Serverrel. Ha még nem telepítette az SQL Server parancssori eszközeit a Linux rendszerű gépen, telepítenie kell őket. Az eszközök telepítésével kapcsolatos további információkért válassza ki a Linux-disztribúciót az alábbi listából:

Adatok importálása bcp használatával

Ebben az oktatóanyagban létrehoz egy mintaadatbázist és egy táblát a helyi SQL Server-példányon (localhost), majd bcp használatával betölti a mintatáblát egy lemezen lévő szövegfájlból.

Mintaadatbázis és -tábla létrehozása

Először hozzunk létre egy mintaadatbázist egy egyszerű táblával, amelyet az oktatóanyag többi részében használunk.

  1. A Linux-mezőben nyisson meg egy parancsterminált.

  2. Másolja és illessze be a következő parancsokat a terminálablakba. Ezek a parancsok az sqlcmd parancssori segédprogrammal hoznak létre mintaadatbázist (BcpSampleDB) és egy táblát (TestEmployees) a helyi SQL Server-példányon (localhost). A parancsok futtatása előtt szükség szerint cserélje le a username és <password>.

A jelszónak az SQL Server alapértelmezett jelszóházirendetkell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.

Az adatbázis létrehozása BcpSampleDB:

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

Hozza létre a táblát TestEmployees az adatbázisban 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));"

A forrásadatfájl létrehozása

Másolja és illessze be a következő parancsot a terminálablakba. A beépített cat paranccsal létrehozunk egy szöveges mintaadatfájlt, amely három rekordot tartalmaz. Mentsük el a fájlt a kezdőkönyvtáradba ~/test_data.txt. A rekordok mezőit vesszővel tagolja.

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

Az adatfájl helyes létrehozásának ellenőrzéséhez futtassa az alábbi parancsot a terminálablakban:

cat ~/test_data.txt

Ennek a terminálablakban a következőnek kell megjelennie:

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

Adatok importálása a forrásadatfájlból

Másolja és illessze be a következő parancsokat a terminálablakba. Ez a parancs bcp használatával csatlakozik a helyi SQL Server-példányhoz (localhost), és importálja az adatokat az adatbázis (~/test_data.txt) táblájába (TestEmployees) az adatfájlból (BcpSampleDB). A parancsok futtatása előtt ne felejtse el lecserélni a felhasználónevet és a <password>.

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

Az alábbi példában röviden áttekintjük az bcp használt parancssori paramétereket:

  • -S: az SQL Server azon példányát adja meg, amelyhez csatlakozni szeretne
  • -U: az SQL Serverhez való csatlakozáshoz használt bejelentkezési azonosítót adja meg
  • -P: megadja a bejelentkezési azonosító jelszavát
  • -d: megadja a csatlakozni kívánt adatbázist
  • -c: karakter adattípussal hajt végre műveleteket
  • -t: a mező terminátorát adja meg. comma használjuk az adatfájl rekordjainak mező terminátoraként

Jegyzet

Ebben a példában nem adunk meg egyéni sorszétválasztót. A szöveges adatfájl sorai helyesen newline végződtek, amikor a cat paranccsal korábban létrehoztuk az adatfájlt.

Az adatok importálásának sikerességét az alábbi parancs futtatásával ellenőrizheti a terminálablakban. A parancs futtatása előtt szükség szerint cserélje le a username és a <password>.

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

Ennek a következő eredményeket kell megjelenítenie:

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

Adatok exportálása bcp használatával

Ebben az oktatóanyagban bcp használatával exportál adatokat a korábban létrehozott mintatáblából egy új adatfájlba.

Másolja és illessze be a következő parancsokat a terminálablakba. Ezek a parancsok a bcp parancssori segédprogrammal exportálják az adatokat az adatbázis TestEmployees táblából BcpSampleDB egy ~/test_export.txtnevű új adatfájlba. A parancs futtatása előtt ne felejtse el lecserélni a felhasználónevet és a <password>.

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

Az adatok helyes exportálásának ellenőrzéséhez futtassa a következő parancsot a terminálablakban:

cat ~/test_export.txt

Ennek a terminálablakban a következőnek kell megjelennie:

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