inserție în vrac (Transact-sql)

Numele bazei de date în care tabelul specificat sau de vedere. Dacă nu este specificat, se presupune baza de date curentă.

Numele tabelului sau diagramă. Notă argument nume_schemă opțional, în cazul în care schema implicită pentru utilizatorul care efectuează operarea sistemului de import în masă este specificată tabelă sau vizualizare. În cazul în care schema nu este specificată și schema implicită pentru utilizatorul care efectuează operațiunea de import în vrac este diferită de schema tabelei sau vizualizării, SQL Server returnează un mesaj de eroare și de operațiune de import în vrac nu reușește.

Numele tabelei sau vizualizării, care a produs importuri masive de date. indică numai acele puncte de vedere, în care toate coloanele se referă la aceeași masă de bază. Pentru mai multe informații despre limitările atunci când încărcarea datelor în prezentarea cm. Sub INSERT instrucțiuni (Transact-SQL).

Complet calea și numele fișierului bazei de date care conține importate în datele din tabel sau vizualizare specificate. Declarație INSERT VRAC poate importa date dintr-un disc (o rețea, floppy, greu, și așa mai departe. D.).

Argumentul data_file trebuie să conțină o cale validă de la serverul care execută SQL Server. Dacă data_file argument este un fișier de la distanță, specificați numele UNC. numele UNC are forma \\ Systemname \ ShareName \ cale \ NumeFișier. De exemplu, \\ SystemX \ DiskZ \ Vânzări \ update.txt.

Specifică numărul de linii într-un singur pachet. Fiecare pachet este copiat la server într-o singură tranzacție. SQL Server comite sau derulează înapoi tranzacția pentru fiecare dintre pachetele. În mod implicit, toate datele conținute în fișierul transmis într-un singur pachet. Pentru mai multe informații despre probleme de performanță, a se vedea. „Observații“, mai târziu în această secțiune.

Indică faptul că în cazul în care operațiunea de import în vrac pentru a verifica toate constrângerile tabelei destinație sau vizualizare. Fără parametru CHECK_CONSTRAINTS și toate restricțiile FOREIGN KEY CHECK sărite și la terminarea mesei de restricție de operare este marcat ca fiind nesigure.

Restricții UNIQUE, PRIMARY KEY, si NOT NULL oricum, verificate.

Mai devreme sau mai târziu, trebuie să verificați întregul tabel pentru a respecta limitele. În cazul în care masa înainte de a începe operațiune de import în masă nu a fost gol, costul de constrângeri Reexaminați poate depăși costul de aplicare a datelor de extensie constrângeri de verificare.

Dezactivarea limitelor (setarea implicită) poate fi necesară în situațiile în care datele de intrare conține rânduri care încalcă aceste restricții. Puteți importa date atunci când constrângerile de verificare deconectate CHECK, și apoi utilizați instrucțiuni Transact-SQL pentru a elimina datele incorecte.

Tipurile de baze de date private, cu excepția coloanelor de tip char. varchar, și text. în care datele sunt stocate în Unicode. tip widenative de fișier de date create de date în vrac de import din SQL Server folosind utilitarul BCP.

tip widenative oferă o performanță mai mare comparativ cu widechar. Dacă fișierul de date conține caractere extinse ANSI, specificați widenative de valoare.

Conectați-vă indică sfârșitul câmpului utilizat pentru date și tipul de fișier char widechar. În mod implicit, semnul sfârșitul câmpului este un caracter tab (\ t). Pentru mai multe informații, consultați. Cum se determină sfârșitul câmpului și caracteristici liniare.

Specifică primul număr de linie pentru a descărca. Valoarea implicită - primul rând al fișierului de date specificat. Valorile argument FIRSTROW încep de la 1.

Atribut nu FIRSTROW intenționat pentru a sări peste antetele de coloană. Treci antet nu este acceptată de inserare a instrucțiunilor BULK. Când sărind peste rânduri Componenta SQL Server căutări de date a motorului numai în sfârșitul atributele de câmp, și nu verifică datele din liniile lipsă ale câmpurilor.

Indică faptul că tipul INSERT bistabilele vor fi efectuate la import în masă sunt definite pentru tabela destinație. Dacă operația INSERT declanșează definite în tabelul de destinație, acestea vor funcționa pentru fiecare pachet descărcat.

Dacă parametrul FIRE_TRIGGERS nu este specificat, se introduce declanșatoare nu sunt îndeplinite.

Specifică calea completă la formatul de fișier. format de fișier descrie fișierul de date - informațiile obținute de către utilitarul BCP pe aceeași tabelă sau vizualizare. Și este destinat pentru cazurile în care:

fișier de date conține coloane cu mai multe sau mai puține decât cele din tabel sau vizualizare;

coloanele sunt aranjate într-o ordine diferită;

diferite separatoare de coloane;

Aceasta indică faptul că valoarea sau identificatorul valorilor din fișierul de date importate pentru a fi utilizate pentru identificatorii de coloană. În cazul în care nu este specificat KEEPIDENTITY, valorile de identitate pentru această coloană sunt verificate, dar nu au fost importate și SQL Server atribuie automat valori unice pe baza valorii inițiale și a sporului specificat la crearea unui tabel. În cazul în care fișierul de date nu conține valori pentru coloana de identitate, specificați formatul de fișier pe care o coloană de identitate într-un tabel sau o vizualizare la importarea datelor skip. În acest caz, SQL Server atribuie automat valori unice pentru coloana. Pentru informații suplimentare. A se vedea DBCC CHECKIDENT (Transact-SQL).

Specifică faptul că coloanele goale din importurile de masă ar trebui să fie atribuite valori NULL, mai degrabă decât valorile implicite care sunt atribuite acestor coloane. Pentru mai multe informații, consultați. În Salvarea valori NULL sau valori implicite de utilizare pentru importul de date în masă.

Specifică numărul aproximativ de kilobytes de date în pachet ca kilobytes_per_batch. Implicit, valoarea KILOBYTES_PER_BATCH este necunoscut. Pentru mai multe informații despre probleme de performanță, a se vedea. „Observații“, mai târziu în această secțiune.

Specifică ultima linie pentru a porni. Valoarea implicită este 0, ceea ce reprezintă ultima linie din fișierul de date a spus.

Se specifică numărul maxim de erori de sintaxă permise pentru fișierul de date, înainte de operațiunea de import în vrac vor fi anulate. Fiecare șir al cărui import import de masă poate fi realizată este trecut și este considerat de o eroare. Dacă argumentul max_errors nu este specificat, valoarea implicită este 10.

Opțiunea MAX_ERRORS nu se aplică constrângeri de verificare sau de a transforma bani și tipuri de date BIGINT.

Acesta specifică modul de sortare a datelor din fișier. import creșteri ale productivității în masă în cazul în care datele importate ordonate conform tabel index grupat (dacă există). Dacă fișierul de date este sortat într-o ordine diferită, adică, într-o ordine diferită de ordinul a cheii de index cluster, sau dacă tabelul nu are un index cluster, comanda nu este procesată. Tabela țintă trebuie să fie specificate numele coloanelor. În mod implicit, insertul în vrac consideră că fișierul de date nu sunt sortate. Pentru optimizat import vrac SQL Server verifică, de asemenea, sortarea datelor importate.

Substituent care indică faptul că pot fi specificate mai multe coloane.

Indică numărul aproximativ de rânduri din fișierul de date.

În mod implicit, toate datele din dosarul trimis la server într-o singură tranzacție, precum și numărul de linii din pachetul de optimizare a cererilor necunoscute. Dacă specificați un argument ROWS_PER_BATCH (cu o valoare de> 0), serverul va folosi această valoare pentru a optimiza operațiunea de import în vrac. Valoarea specificată în ROWS_PER_BATCH, ar trebui să se potrivească cu aproximativ numărul real de rânduri. Pentru mai multe informații despre probleme de performanță, a se vedea. „Observații“, mai târziu în această secțiune.

Aceasta indică o linie de terminator utilizat pentru date și tipul de fișier char widechar. Implicit, șirul simbol terminator este \ r \ n (caracter line feed). Pentru mai multe informații, consultați. Cum se determină sfârșitul câmpului și caracteristici liniare.

Aceasta subliniază necesitatea unei cereri de blocare la nivel de masă pentru executarea unui import în vrac. Dacă tabelul nu are indecși și TABLOCK cuvinte cheie specificate, încărcarea tabelului poate fi realizată în paralel în mai mulți clienți. În mod implicit, operațiunea de blocare este determinată de un sistem de blocare de masa parametru de sarcină în vrac. Lock pentru a efectua importuri în vrac de timp îmbunătățește semnificativ performanțele, reduce masa de blocare afirmație. Pentru mai multe informații despre probleme de performanță, a se vedea. „Observații“, mai târziu în această secțiune.

Specifică fișierul utilizat pentru a colecta rânduri care conțin erori de formatare și nu pot fi convertite în OLE DB a setului de rânduri. Aceste linii sunt copiate neschimbate din fișierul de date în fișierul de eroare.

fișier de eroare este creat pe scena comenzii. În cazul în care există deja, apare o eroare. In plus, un fișier de control cu ​​extensia ERROR.txt. care conține link-uri către fiecare dintre rândurile din fișierul de eroare și informații de diagnosticare. După corectarea erorii, aceste date pot fi descărcate din nou.

Compara INSERT VRAC, instrucțiune INSERT. SELECT * FROM OPENROWSET (BULK.) Și BCP comanda, a se vedea. Import secțiunea vrac și operațiuni de export în vrac.

Pentru mai multe informații cu privire la pregătirea datelor pentru importul în vrac, aceste cerințe atunci când importați date dintr-un fișier CSV. A se vedea secțiunea pregătirea datelor pentru masă export sau import.

instrucțiune INSERT VRAC poate fi executată într-o tranzacție de utilizator. tranzacție utilizator Retroactivitatea cuprinzând declarația BULK INSERT cu mărimea șarjei, generarea de date de import într-un tabel sau o reprezentare a mai multor pachete, provoacă o derulare înapoi a toate pachetele trimise la SQL Server.

Pentru informații despre când se introduce un rând tranzacțiile sunt înregistrate în jurnalul de tranzacții efectuate în timpul importului în vrac, a se vedea. Secțiunea Condiții indispensabile pentru datele minime log import masă de referință.

float propria prezentare de date sau reale tipuri sunt valabile;

date Unicode sunt chiar lungime.

Pentru datele în formatul greșit, care, în versiunile anterioare ale SQL Server sunt încărcate, operațiunea de import în vrac nu poate fi executată. În versiunile anterioare de eroare SQL Server nu are loc, atâta timp cât clientul nu încearcă să obțină acces la date invalide. O verificare mai riguroasă reduce probabilitatea de urgență în timpul unei solicitări de date după importul în vrac.

restricţii

Când se utilizează fișierul format cu declarația BULK INSERT, puteți specifica până la 1024 câmpuri. Această valoare coincide cu numărul maxim de coloane din tabel. Când se utilizează instrucțiunea INSERT cu fișierul BULK de date, care conține mai mult de 1024 de câmpuri generate de eroare BCP 4822. Programul nu are această limitare, astfel încât fișierele de date care conțin mai mult de 1024 de câmp, utilizați comanda BCP.

probleme de performanță

Din cauza diferențelor de calculatoare este recomandat pentru a testa volumul lor de lucru cu diferite dimensiuni de pachete, pentru a identifica cea mai bună opțiune.

SQLXML Documente vrac de import sau de export

Pentru date SQLXML de import în vrac la export sau, utilizați una dintre următoarele tipuri de date în format de fișier.

Cu toate acestea, declarația BULK INSERT nu va fi în măsură să importe datele direct în t_float tabel. deoarece a doua coloană c2 are un tip de date zecimal. Deci, ai nevoie de un fișier în format. Într-un flotor de date în notație științifică ar trebui să fie comparat cu formatul zecimal al c2 coloana.

Urmatorul format de fișier SQLFLT8 folosind potrivire de tip de date pentru al doilea câmp de date pentru a doua coloană:

Pentru a utiliza acest format de fișier (fișier C: \ t_floatformat-c-xml.xml) atunci când importați datele de testare în tabelul de testare, executați următoarea declarație Transact-SQL:

Pentru a importa o valoare de identitate din fișierul de date este specificat KEEPIDENTITY.

Delegă Securitate Conturi (uzurparea identității)

Dacă utilizatorul SQL Server este conectat prin intermediul Autentificarea Windows, are acces numai la acele fișiere care sunt accesibile contul utilizatorului, indiferent de profilul de securitate al procesului de SQL Server.

Dacă utilizați declarația BULK INSERT sqlcmd sau osql a programului este executat pe un singur calculator, de introducere a datelor are loc în SQL Server pe un alt calculator, și puncte de argument data_file la un al treilea computer utilizând UNC-cale, se pot produce erori 4861.

Pentru a rezolva această problemă, utilizați SQL Server de autentificare și specificați serverul de conectare SQL care utilizează cont de proces SQL Server profilul de siguranță, sau să configurați Windows pentru a delega conturi de securitate. Pentru mai multe informații despre modul de a face un cont de utilizator accesibil delegației, a se vedea. Ajutor pentru Windows.

Pentru mai multe informații despre acestea și alte probleme de securitate atunci când utilizează BULK INSERT cm. În secțiunea de import de date în masă cu INSERT VRAC manuală sau OPENROWSET (BULK.).

A. Aplicarea liniei verticale ca o caracteristică a capătului coloanei la importul datelor dintr-un fișier