Udostępnij za pośrednictwem


Aby pominąć kolumnę tabeli przy użyciu pliku formatu

W tym temacie opisano format plików.plik formatu można pominąć importowanie kolumna tabela, gdy pole nie istnieje w pliku danych.Plik danych może zawierają mniej pól niż liczba kolumn w tabela tylko wtedy, gdy nullable pominięto kolumn lub wartość domyślna.

Przykładową tabelę i pliku danych

Następujące przykłady wymagają tabela o nazwie myTestSkipCol w AdventureWorks przykładowej bazy danych pod dbo schematu.Tworzenie tabela w następujący sposób:

USE AdventureWorks2008R2;
GO
CREATE TABLE myTestSkipCol 
   (
   Col1 smallint,
   Col2 nvarchar(50) NULL,
   Col3 nvarchar(50) not NULL
   );
GO

W następujących przykładach użyto przykładowy plik danych, myTestSkipCol2.dat, który zawiera tylko dwa pola, chociaż odpowiedniej tabela zawiera trzy kolumny:

1,DataForColumn3
1,DataForColumn3
1,DataForColumn3

Aby import zbiorczy danych z myTestSkipCol2.dat do myTestSkipCol tabela, plik formatu należy zamapować pierwsze pole danych, aby Col1, drugie pole do Col3, pomijanie Col2.

Przy użyciu pliku Format XML programu

Można zmodyfikować plik formatu XML programu, aby pominąć kolumna tabela.Zazwyczaj to polega na użyciu bcp narzędzie, aby utworzyć plik formatu XML inny niż domyślny i modyfikowanie domyślnego pliku w tekście edytora.Zmodyfikowany plik formatu należy mapować każdy istniejących pól jej odpowiednią kolumna tabela i wskazać kolumna tabela lub kolumna, aby pominąć.Dwie alternatywy dla modyfikowania pliku danych XML inny niż domyślny.Alternatywne albo wskazuje, że pole danych nie istnieje w pliku danych i że żadne dane nie zostanie wstawiona do odpowiedniej kolumna tabela.

Tworzenie pliku formatu XML inny niż domyślny

W tym temacie wykorzystuje plik formatu XML inny niż domyślny, utworzonego dla myTestSkipCol przykładową tabela przy użyciu następujących bcp polecenia:

bcp AdventureWorks2008R2..myTestSkipCol format nul -f myTestSkipCol_Default.fmt -c -T

Poprzednie polecenie tworzy innych niż XML plik formatu, myTestSkipCol_Default.fmt.Ten plik formatu jest nazywany domyślnego plik formatu , ponieważ jest formularz wygenerowany przez bcp.Zazwyczaj domyślne plik formatu opisuje odpowiedniość między plikiem danych pola i kolumny tabela.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Trzeba określić nazwę wystąpienie serwera, z którym się łączysz.Ponadto trzeba określić nazwę użytkownika i hasło.Aby uzyskać więcej informacji, zobacz Narzędzie bcp.

Ilustracja przedstawia wartości w tej przykładowe pliki formatu domyślnego.Na ilustracji pokazano również nazwę każdego pole format pliku.

domyślny inny niż XML format pliku dla tabeli myTestSkipCol

Ostrzeżenie

Aby uzyskać więcej informacji o polach format pliku, zobacz Opis plików w formacie XML programu.

Modyfikowanie pliku formatu XML inny niż metody

Aby pominąć kolumna tabela, Edytuj plik formatu XML inny niż domyślny i zmodyfikować plik przy użyciu jednej z następujących metod alternatywnych:

  • Preferowana metoda obejmuje trzy podstawowe kroki.Należy najpierw usunąć dowolnego wiersza format pliku, opisujący pole, w którym brakuje pliku danych.Następnie zmniejsz "Host plików pole kolejność" wartość każdego wiersza format pliku, który następuje usunięty wiersz.Celem jest "Host pliku pole kolejności" wartości od 1 do n, które odzwierciedlają aktualne położenie każdego pole danych w pliku danych.Wreszcie Zmniejsz wartość w polu "Liczba kolumn" pole odzwierciedlać rzeczywiste liczby pól w pliku danych.

    Poniższy przykład jest oparty na pliku domyślnego formatu dla myTestSkipCol tabela, która jest tworzona w "Tworzenie domyślne Non-plik formatu XML," wcześniej w tym temacie.Ten plik formatu zmodyfikowanego mapuje pierwsze pole danych, aby Col1, pomija Col2i mapy pola drugiego danych do Col3.Wiersz Col2 został usunięty.Inne modyfikacje są wskazywane pogrubioną czcionką:

    9.0
    2
    1       SQLCHAR       0       7       "\t"     1     Col1         ""
    2       SQLCHAR       0       100     "\r\n"   3     Col3         SQL_Latin1_General_CP1_CI_AS
    
  • Alternatywnie aby pominąć kolumna tabela, można zmodyfikować definicji wiersza format pliku, który odpowiada kolumnie tabela.W tym wierszu pliku formatu ", długość prefiksu" "długość danych pliku hosta", i "server kolumna zamówienia" wartości muszą być zestaw na 0.Ponadto "terminator" i "sortowanie kolumna" pola muszą być zestaw do "" (NULL).

    "Nazwa kolumna serwera" wartość wymaga ciąg niepustych, chociaż nazwa rzeczywistej kolumna nie jest konieczne.Pozostałe pola format wymagają ich wartości domyślne.

    Poniższy przykład jest również pochodną domyślnego plik formatu dla myTestSkipCol tabela.Wartości, które muszą być 0 lub wartość zerowa oznaczono czcionką pogrubioną.

    9.0
    3
    1       SQLCHAR       0       7       "\t"     1     Col1         ""
    2       SQLCHAR       0       0      ""     0     Col2         ""
    3       SQLCHAR       0       100     "\r\n"   3     Col3         SQL_Latin1_General_CP1_CI_AS
    

Przykłady

Następujące przykłady są również oparte na myTestSkipCol przykładową tabela i myTestSkipCol2.dat Przykładowy plik danych, które są tworzone w "próbki tabela i danych pliku" wcześniej w tym temacie.

Za pomocą polecenia WSTAW luzem

W tym przykładzie działa przy użyciu plików formatu zmodyfikowane inne niż XML utworzone w"metod dla modyfikowania Non-Format pliku XML" wcześniej w tym temacie.W tym przykładzie zmodyfikowany plik formatu o nazwie C:\myTestSkipCol2.fmt.Aby użyć BULK INSERT do import zbiorczy myTestSkipCol2.dat dane pliku w SQL Server Management Studio Edytor kwerend wykonać następujący kod:

USE AdventureWorks2008R2;
GO
BULK INSERT myTestSkipCol 
   FROM 'C:\myTestSkipCol2.dat' 
   WITH (FORMATFILE = 'C:\myTestSkipCol2.fmt');
GO
SELECT * FROM myTestSkipCol;
GO

Przy użyciu pliku w formacie XML

Z XML plik formatu, nie można pominąć kolumna, gdy są importowane bezpośrednio do tabela za pomocą bcp polecenia lub instrukcja WSTAW luzem.Można jednak zaimportować do tylko ostatnia kolumna tabela.Jeśli masz pominąć żadnego ale ostatniej kolumna, należy utworzyć widok tabela miejsce docelowe, zawierający tylko kolumna pliku danych.Następnie można import zbiorczy danych z tego pliku do widoku.

Aby użyć XML plik formatu Aby pominąć kolumna tabela przy użyciu OPENROWSET(BULK...), musisz podać jawną listę kolumn na liście select, a także w tabela miejsce docelowe w następujący sposób:

WSTAW...<column_list> Zaznacz <column_list> Z OPENROWSET(BULK...)

Tworzenie domyślnego pliku formatu XML

Przykłady zmodyfikowanych plików są oparte na myTestSkipCol pliku tabela i dane przykładowe tworzenia "próbki tabela i pliku danych" wcześniej w tym temacie.Następujące bcp polecenie tworzy domyślny plik formatu XML dla myTestSkipCol tabela:

bcp AdventureWorks2008R2..myTestSkipCol format nul -f myTestSkipCol_Default.xml -c -x -T

Wynikowy plik formatu XML inny niż domyślny opisuje odpowiedniość między plikiem danych pola i kolumny tabela, jak następuje:

<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="Col3" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>

Ostrzeżenie

Aby uzyskać informacje dotyczące struktury plików w formacie XML, zobacz Opis plików w formacie XML.

Przykłady

Użyj sekcji przykłady w tym myTestSkipCol przykładową tabela i myTestSkipCol2.dat Przykładowy plik danych, które są tworzone w "próbki tabela i danych pliku" wcześniej w tym temacie.Aby importować dane z myTestSkipCol2.dat do myTestSkipCol Przykłady tabela, należy użyć następujących modyfikacji XML plik formatu, myTestSkipCol2-x.xml.To jest na podstawie plik formatu utworzonego w "Tworzenie domyślny plik formatu XML" wcześniej w tym temacie.

<?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Col3" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>

Przy użyciu OPENROWSET(BULK...)

W poniższym przykładzie użyto OPENROWSET dostawca zbiorczych zestawów zestaw wierszy i myTestSkipCol2.xml plik formatu.Importuje luzem przykład myTestSkipCol2.dat dane pliku do myTestSkipCol tabela.Instrukcja zawiera jawna lista kolumn na liście select, a także w tabela miejsce docelowe, zgodnie z wymaganiami.

W SQL Server Management Studio Edytor kwerend wykonać następujący kod:

USE AdventureWorks2008R2;
GO
INSERT INTO myTestSkipCol
  (Col1,Col3)
    SELECT Col1,Col3
      FROM  OPENROWSET(BULK  'C:\myTestSkipCol2.Dat',
      FORMATFILE='C:\myTestSkipCol2.Xml'  
       ) as t1 ;
GO

W widoku za pomocą IMPORTU ZBIORCZEGO

Poniższy przykład tworzy v_myTestSkipCol na myTestSkipCol tabela.Ten widok pomija drugiej tabela kolumna, Col2.Przykład używa BULK INSERT do importowania myTestSkipCol2.dat pliku danych do widoku.

W SQL Server Management Studio Edytor kwerend wykonać następujący kod:

CREATE VIEW v_myTestSkipCol AS
    SELECT Col1,Col3
    FROM myTestSkipCol;
GO

USE AdventureWorks2008R2;
GO
BULK INSERT v_myTestSkipCol
FROM 'C:\myTestSkipCol2.dat'
WITH (FORMATFILE='C:\myTestSkipCol2.xml');
GO