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)
Warehouse v Microsoft Fabric
Formát znaků se doporučuje při hromadném exportu dat do textového souboru, který se má použít v jiném programu nebo při hromadném importu dat z textového souboru vygenerovaného jiným programem.
Formát znaků používá datový formát znaků pro všechny sloupce. Ukládání informací ve formátu znaků je užitečné, když se data používají s jiným programem, například tabulkou, nebo když je potřeba data zkopírovat do instance SQL Serveru od jiného dodavatele databáze, jako je Oracle.
Poznámka
Při hromadném přenosu dat mezi instancemi Microsoft SQL Serveru a pokud datový soubor obsahuje znaková data Unicode, ale ne žádné rozšířené znaky nebo znaky DBCS, použijte formát znaků Unicode. Další informace naleznete v tématu Použití formátu znaků unicode k importu nebo exportu dat (SQL Server).
Důležité informace o používání formátu znaků
Při použití formátu znaků zvažte:
Ve výchozím nastavení nástroj bcp odděluje pole s daty znaků znakem tabulátoru a ukončuje záznamy znakem nového řádku. Informace o tom, jak určit alternativní oddělovače, naleznete v tématu Ukončovací znaky polí a ukončovací znaky řádků (SQL Server).
Ve výchozím nastavení se před hromadným exportem nebo importem dat v režimu znaků provádějí následující převody:
Směr hromadné operace Přeměna Vývoz Převede data na reprezentaci znaků. Pokud je to explicitně požadováno, data se převedou na požadovanou znakovou stránku pro sloupce znaků. Pokud není zadána žádná znaková stránka, znaková data se převádějí pomocí znakové stránky OEM klientského počítače. Dovoz Převede data znaků na nativní reprezentaci v případě potřeby a přeloží data znaků ze znakové stránky klienta na znakovou stránku jednoho nebo více cílových sloupců. Chcete-li zabránit ztrátě rozšířených znaků během převodu, použijte formát znaku Unicode nebo zadejte znakovou stránku.
Všechna sql_variant data uložená v souboru ve formátu znaků se ukládají bez metadat. Každá datová hodnota je převedena na char formátu podle pravidel implicitního převodu dat. Při importu do sloupečku sql_variant se data importují jako char. Při importu do sloupce s datovým typem, který není sql_variant, se data převedou z char s využitím implicitního převodu. Další informace o převodu dat naleznete v tématu Převod datového typu (databázový stroj).
Nástroj bcp exportuje peněžní hodnoty jako datové soubory v znakovém formátu se čtyřmi číslicemi za desetinnou čárkou a bez symbolů seskupování číslic, jako jsou oddělovače čárek. Například sloupec peníze, který obsahuje hodnotu
1,234,567.123456
, je ve větším množství exportován do datového souboru jako znakový řetězec1234567.1235
.
Možnosti příkazů pro formát znaků
Data formátu znaků můžete importovat do tabulky pomocí bcp, BULK INSERT (Transact-SQL)nebo OPENROWSET (Transact-SQL). Pro příkaz bcp nebo příkaz BULK INSERT (Transact-SQL) můžete v příkazu zadat formát dat. V příkazu OPENROWSET (Transact-SQL) je nutné zadat formát dat ve formátovacím souboru.
Formát znaků je podporován následujícími možnostmi příkazu:
Příkaz | Možnost | Popis |
---|---|---|
bcp |
-c |
Způsobí, že nástroj bcp použije znaková data.* |
BULK INSERT |
DATAFILETYPE ='char' |
Při hromadném importu dat používejte formát znaků. |
OPENROWSET |
Není k dispozici | Musí používat formátový soubor. |
* Chcete-li načíst data znaků (-c
) do formátu kompatibilního s dřívějšími verzemi klientů SYSTÉMU SQL Server, použijte přepínač -V
. 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 v tomto článku jsou založené na následující tabulce a formátu souboru.
Ukázková tabulka
Následující skript vytvoří testovací databázi, tabulku s názvem myChar
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.myChar (
PersonID smallint NOT NULL,
FirstName varchar(25) NOT NULL,
LastName varchar(30) NOT NULL,
BirthDate date,
AnnualSalary money
);
-- Populate table
INSERT TestDatabase.dbo.myChar
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.myChar;
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 formát XML. Formát jiného formátu než XML je původní formát podporovaný staršími verzemi SQL Serveru. Další informace naleznete v tématu soubory formátu NEŽ XML (SQL Server). Následující příkaz používá nástroj bcp k vygenerování souboru jiného formátu než XML, myChar.fmt
, na základě schématu myChar
. 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říkaz:
bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c
REM Review file
Notepad D:\BCP\myChar.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
Následující příklady používají soubory databáze a formátu vytvořené dříve v tomto článku.
Export dat pomocí bcp a formátu znaků
-c
přepínač a OUT
příkaz.
Datový soubor vytvořený v tomto příkladu se použije ve všech dalších příkladech.
Na příkazovém řádku zadejte následující příkaz:
bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c
REM Review results
NOTEPAD D:\BCP\myChar.bcp
Použití bcp a znakového formátu k importu dat bez souboru formátu
Přepínač -c
a příkaz IN
. Na příkazovém řádku zadejte následující příkaz:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"
REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"
Použití bcp a znakového formátu pro import dat pomocí souboru s ne-XML formátem
Spínače -c
a -f
a příkaz IN
. Na příkazovém řádku zadejte následující příkaz:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"
REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -f D:\BCP\myChar.fmt -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"
Použití funkce BULK INSERT a formátu znaků bez formátového souboru
Argument DATAFILETYPE
. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
FROM 'D:\BCP\myChar.bcp'
WITH (
DATAFILETYPE = 'Char'
);
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Použití funkce BULK INSERT a formátu znaků se souborem jiného formátu než XML
Toto je příklad argumentu FORMATFILE
. V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
FROM 'D:\BCP\myChar.bcp'
WITH (
FORMATFILE = 'D:\BCP\myChar.fmt'
);
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Použití formátu OPENROWSET a znakového formátu se souborem jiného formátu než XML
Příklad argumentu FORMATFILE
V aplikaci Microsoft SQL Server Management Studio (SSMS) spusťte následující Transact-SQL:
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
INSERT INTO TestDatabase.dbo.myChar
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myChar.bcp',
FORMATFILE = 'D:\BCP\myChar.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Související úkoly
Použití datových formátů pro hromadný import nebo hromadný export:
import dat nativního formátu a formátu znaků ze starších verzí SQL Serveru
Použijte nativní formát pro import nebo export dat (SQL Server)
Použijte formát znaků Unicode pro Import nebo Export dat (SQL Server)
Použijte nativní formát Unicode k importu nebo exportu dat (SQL Server)