Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Nativní formát se doporučuje, když hromadně přenášíte data mezi více instancemi SQL Serveru pomocí datového souboru, který neobsahuje žádné znaky rozšířené nebo dvoubajtové znakové sady (DBCS).
Poznámka
Pokud chcete hromadně přenášet data mezi více instancemi SQL Serveru pomocí datového souboru, který obsahuje rozšířené znaky nebo znaky DBCS, měli byste použít nativní formát Unicode. Další informace najdete v tématu Použití nativního formátu Unicode k importu nebo exportu dat (SQL Server).
Nativní formát udržuje nativní datové typy databáze. Nativní formát je určený pro vysokorychlostní přenos dat mezi tabulkami SQL Serveru. Pokud používáte formátovací soubor, zdrojové a cílové tabulky nemusí být identické. Přenos dat zahrnuje dva kroky:
Hromadný export dat ze zdrojové tabulky do datového souboru
Hromadný import dat z datového souboru do cílové tabulky
Použití nativního formátu mezi identickými tabulkami zabraňuje zbytečnému převodu datových typů do formátu znaků a z formátu znaků, což šetří čas a místo. K dosažení optimální přenosové rychlosti se však provádí několik kontrol týkajících se formátování dat. Pokud chcete zabránit problémům s načtenými daty, podívejte se na následující seznam omezení.
Omezení
Pokud chcete úspěšně importovat data v nativním formátu, ujistěte se, že:
Datový soubor je v nativním formátu.
Cílová tabulka musí být kompatibilní s datovým souborem (se správným počtem sloupců, datovým typem, délkou, stavem NULL atd.), nebo musíte použít formátový soubor k namapování jednotlivých polí na odpovídající sloupce.
Poznámka
Pokud importujete data ze souboru, který se neshoduje s cílovou tabulkou, může operace importu proběhnout úspěšně, ale datové hodnoty vložené do cílové tabulky budou pravděpodobně nesprávné. Důvodem je to, že data ze souboru se interpretují pomocí formátu cílové tabulky. Proto jakákoli neshoda vede k vložení nesprávných hodnot. Za žádných okolností však taková neshoda nemůže způsobit logické nebo fyzické nekonzistence v databázi.
Informace o použití formátových souborů najdete v tématu Formátování souborů pro import nebo export dat (SQL Server).
Úspěšný import nenaškodí cílovou tabulku.
Jak bcp zpracovává data v nativním formátu
Tato část popisuje zvláštní aspekty, jak nástroj bcp exportuje a importuje data v nativním formátu.
Neznaková data
Nástroj bcp používá interní binární datový formát SQL Serveru k zápisu neznakových dat z tabulky do datového souboru.
-
Na začátku každého pole char nebo varchar, bcp přidá délku prefixu.
Důležitý
Při použití nativního režimu nástroj bcp převede znaky z SQL Serveru na znaky OEM předtím, než je zkopíruje do datového souboru. Nástroj bcp převede znaky z datového souboru na znaky ANSI, než je hromadně naimportuje do tabulky SQL Serveru. Během těchto převodů může dojít ke ztrátě rozšířených znakových dat. Pro rozšířené znaky použijte nativní formát Unicode nebo zadejte znakovou stránku.
sql_variant data
Pokud sql_variant data jsou uložena jako SQLVARIANT v datovém souboru nativního formátu, data udržují všechny své vlastnosti. Metadata, která zaznamenávají datový typ každé datové hodnoty, se ukládají spolu s datovou hodnotou. Tato metadata slouží k opětovnému vytvoření datové hodnoty se stejným datovým typem v cílovém sql_variant sloupci.
Pokud datový typ cílového sloupce není sql_variant, každá datová hodnota se převede na datový typ cílového sloupce podle normálních pravidel implicitního převodu dat. Pokud během převodu dat dojde k chybě, aktuální dávka se vrátí zpět. Jakákoli char a varchar hodnota přenášená mezi sloupci sql_variant může mít problémy s převodem znakové stránky.
Další informace o převodu dat naleznete v tématu Převod datového typu (databázový stroj).
Možnosti příkazů pro nativní formát
Nativní formát dat můžete importovat do tabulky pomocí bcp, BULK INSERT nebo INSERT ... SELECT * FROM OPENROWSET(BULK...). Pro příkaz bcp nebo PŘÍKAZ BULK INSERT můžete zadat formát dat v příkazu. Pro INSERT ... SELECT * FROM OPENROWSET(BULK...) příkaz, je nutné zadat formát dat ve formátu souboru.
Nativní formát je podporován následujícími možnostmi příkazů:
| Příkaz | Možnost | Popis |
|---|---|---|
bcp |
-n |
Způsobí, že nástroj bcp použije nativní datové typy. |
BULK INSERT |
DATAFILETYPE ='native' |
Používá nativní nebo široké nativní datové typy dat.
DATAFILETYPE není potřeba, pokud formátovací soubor určuje datové typy. |
OPENROWSET |
Není k dispozici | Musí používat formátový soubor. |
* Chcete-li načíst nativní (-n) data do formátu kompatibilního se staršími verzemi klientů SQL Serveru, použijte -V přepínač. Další informace naleznete v tématu Import nativních a znakových formátů dat ze starších verzí SQL Serveru.
Poznámka
Alternativně můžete v souboru formátu zadat formátování pro jednotlivá pole. Další informace najdete v tématu Formátovat soubory pro import nebo export dat (SQL Server).
Příklady testovacích podmínek
Příklady používají soubory databáze a formátu vytvořené v tomto článku.
Ukázková tabulka
Následující skript vytvoří testovací databázi, tabulku s názvem myNative a naplní tabulku některými počátečními hodnotami. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE dbo.myNative (
PersonID smallint NOT NULL,
FirstName varchar(25) NOT NULL,
LastName varchar(30) NOT NULL,
BirthDate date,
AnnualSalary money
);
-- Populate table
INSERT TestDatabase.dbo.myNative
VALUES
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);
-- Review Data
SELECT * FROM TestDatabase.dbo.myNative;
Ukázkový soubor formátu jiného formátu než XML
SQL Server podporuje dva typy formátového souboru: ne-XML formát a XML formát. Formát jiného formátu než XML je původní formát podporovaný staršími verzemi SQL Serveru. Podrobné informace najdete v tématu Použití souborů formátu NEŽ XML (SQL Server). Následující příkaz použije nástroj bcp k vygenerování souboru jiného formátu než XML, myNative.fmt, na základě schématu myNative. Pokud chcete k vytvoření formátu souboru použít příkaz b cp, zadejte format argument a místo cesty k datovému souboru použijte nul. Možnost formátu také vyžaduje možnost -f. V tomto příkladu se kvalifikátor c používá k určení údajů o znacích a T slouží k určení důvěryhodného připojení s využitím integrovaného zabezpečení. Na příkazovém řádku zadejte následující příkazy:
bcp TestDatabase.dbo.myNative format nul -f D:\BCP\myNative.fmt -T
REM Review file
Notepad D:\BCP\myNative.fmt
Důležitý
Ujistěte se, že soubor bez formátu XML končí znakem return\line. V opačném případě se pravděpodobně zobrazí následující chybová zpráva:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Příklady
Příklady používají soubory databáze a formátu vytvořené v tomto článku.
Export dat pomocí bcp a nativního formátu
Přepínač -n a příkaz OUT.
Datový soubor vytvořený v tomto příkladu se použije v dalších příkladech.
Na příkazovém řádku zadejte následující příkazy:
bcp TestDatabase.dbo.myNative OUT D:\BCP\myNative.bcp -T -n
REM Review results
NOTEPAD D:\BCP\myNative.bcp
Použití bcp a nativního formátu k importu dat bez formátu souboru
Přepínač -n a příkaz IN.
Na příkazovém řádku zadejte následující příkazy:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNative;"
REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -T -n
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNative;"
Použití bcp a nativního formátu k importu dat se souborem jiného formátu než XML
Spínače -n a -f a příkaz IN.
Na příkazovém řádku zadejte následující příkazy:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myNative;"
REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -f D:\BCP\myNative.fmt -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myNative;"
Použití BULK INSERT a nativního formátu bez souboru formátu
Argument DATAFILETYPE.
V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
FROM 'D:\BCP\myNative.bcp'
WITH (
DATAFILETYPE = 'native'
);
-- review results
SELECT * FROM TestDatabase.dbo.myNative;
Použití funkce BULK INSERT a nativního formátu se souborem jiného formátu než XML
Argument FORMATFILE.
V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
FROM 'D:\BCP\myNative.bcp'
WITH (
FORMATFILE = 'D:\BCP\myNative.fmt'
);
-- review results
SELECT * FROM TestDatabase.dbo.myNative;
Použití OPENROWSET a nativního formátu se souborem jiného formátu než XML
Argument FORMATFILE.
V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
TRUNCATE TABLE TestDatabase.dbo.myNative; -- for testing
INSERT INTO TestDatabase.dbo.myNative
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myNative.bcp',
FORMATFILE = 'D:\BCP\myNative.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myNative;
Související úkoly
Použití datových formátů pro hromadný import nebo hromadný export:
Import nativních dat a dat formátu znaků ze starších verzí SQL Serveru
Použití formátu znaků k importu nebo exportu dat (SQL Server)
Import nebo export dat (SQL Server) pomocí formátu znaků Unicode
k importu nebo exportu dat (SQL Server) pomocí nativního formátu Unicode
Související obsah
- bcp Nástroj
- hromadné vložení (Transact-SQL)
- Datové typy (Transact-SQL)
- sql_variant (Transact-SQL)
- Import nativních dat a dat formátu znaků ze starších verzí SQL Serveru
- OPENROWSET (Transact-SQL)
- k importu nebo exportu dat (SQL Server) pomocí nativního formátu Unicode