Когато работите като администратор или разработчик на база данни на SQL Server, не можете да живеете във вашия изолиран свят на SQL Server, без да общувате с други източници на данни. Например, рядко има ден, в който няма да бъдете помолени да импортирате данни от Excel, Access или CSV файл във вашата таблица на SQL Server. Или, обратно, експортирайте една от вашите таблици на база данни на SQL Server във външен файл, за да може тази таблица да се използва в друг механизъм за база данни или да бъде анализирана външно от съответния екип.
SQL Server ни предоставя редица методи, които могат да се използват за експортиране на съществуваща таблица на база данни на SQL Server в Excel или текстов файл и импортиране на данни от външен източник на данни в нова или съществуваща таблица на база данни на SQL Server. В тази статия постепенно ще разгледаме всички тези методи.
Помощна програма BCP
Помощната програма за групово копиране, известна още като BCP, е помощна програма на командния ред, която може да се използва за импортиране на голям брой редове от файл с данни на операционната система във вашата таблица на база данни на SQL Server или за експортиране на съществуваща таблица на база данни на SQL Server в операционна системен файл с данни.
Синтаксисът на инструмента BCP съдържа голямо разнообразие от опции. Това са най-често използваните:
- Името на таблицата или изгледа на базата данни на SQL Server – това ще действа като източник на данни в случай на процес на експортиране на данни и като местоназначение в случай на процес на импортиране на данни.
- Посоката на данните, където IN показва импортиране на данни и ИЗХОД показва експортиране на данни.
- Името на локалния файл с данни, който ще действа като източник в случай на процес на импортиране на данни и като местоназначение в случай на процес на експортиране на данни.
- -S сървър\екземпляр – използва се за определяне на името на екземпляр на SQL Server.
- –г – използва се за определяне на базата данни, която съдържа таблицата източник или дестинация.
- -T – използва се, за да посочите, че удостоверяването на Windows ще се използва за свързване със SQL сървъра.
- -U потребителско име и -P парола – те определят потребителското име и паролата, използвани за свързване към екземпляра на SQL Server.
- Помощната програма за групово копиране, известна още като BCP, е помощна програма на командния ред, която може да се използва за импортиране на голям брой редове от файл с данни на операционната система във вашата таблица на база данни на SQL Server или за експортиране на съществуваща таблица на база данни на SQL Server към файл с данни на операционната система. – те се използват за определяне на формата за изходния или целевия файл с данни и разделителите, използвани в този файл с данни.
Например командата BCP по-долу се използва за експорт съдържанието на таблицата на базата данни Employee_Main групово в CSV файл, както следва:
bcp AdventureWorks2016CTP3.dbo.Employee_Main out C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n
Тези данни ще бъдат бързо копирани в CSV файл, както е показано в резултата по-долу:
За да импортирате съдържанието на CSV файл в таблица на база данни, може да се използва следната BCP команда, за да се постигне това бързо на едро:
bcp AdventureWorks.dbo.Employee_Main в C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n
И данните ще бъдат вмъкнати в таблицата на базата данни, както е показано в резултата по-долу:
Като отделите няколко минути за подготовка на тези команди с подходящи опции, можете лесно да използвате помощната програма BCP, за да импортирате данни от или да ги експортирате във файлове с текстови данни.
ОБЕПНА ВМЕСКА
BULK INSERT T-SQL изявлението работи подобно на BCP IN команда и се използва за импортиране на данни от файл с данни, който е достъпен от услугата SQL Server в таблица на база данни на SQL Server – всичко това се извършва директно в SQL Server. За разлика от командата BCP IN, операторът BULK INSERT може да бъде групиран с други операции в една транзакция на SQL Server, която се изпълнява под ваш контрол.
Инструкцията BULK INSERT T-SQL по-долу може да се използва за импортиране на данни от CSV файл в съществуваща таблица на база данни, като се указват както разделителите на колони, така и на редове, както е показано по-долу:
BULK INSERT AdventureWorks.dbo.Employee_Main FROM 'C:\Test\Employees.csv' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR ='\n' ); GO
OPENROWSET
Функцията OPENROWSET се използва за свързване към източници на данни с помощта на доставчик на OLEDB връзка и след това да се използва посочената T-SQL заявка за извличане на данни от този източник на данни. Основните предимства на функцията OPENROWSET пред методите BCP и BULK INSERT са следните:
- можете да филтрирате данните, извлечени от оператора OPENROWSET с помощта на клауза WHERE
- можете да го използвате в оператор SELECT за четене на данните от източника на данни – не само с израза INSERT
За да използвате израза OPENROWSET, ще трябва да активирате ad hoc разпределените заявки опция за системна конфигурация първо, като използвате скрипта по-долу:
sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO
След като активирате опцията за конфигурация на системата за разпределени заявки ad hoc, можете да използвате функцията OPENROWSET за импортиране на данни в таблици на база данни на SQL Server от CSV файлове с предварително дефиниран формат на данни, както е показано в T-SQL заявката по-долу:
INSERT INTO [AdventureWorks].[dbo].[Employee_Main] ([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber]) SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber] FROM OPENROWSET( BULK 'C:\Test\Employees.csv', FORMATFILE = 'C:\Test\Fmt.xml' ) AS rows;
Свързан сървър
Свързаният сървър на SQL Server е сървърен обект, който е конфигуриран да позволи на SQL Server Database Engine да се свързва с различни типове източници на данни OLE DB извън екземпляра на SQL Server. Свързаният сървър може лесно да бъде създаден с помощта на SQL Server Management Studio или T-SQL командите, както е показано по-долу:
Веднъж създаден, свързаният сървър може лесно да се използва за достъп до отдалечения източник на данни и импортиране на съответните данни в таблицата на базата данни на SQL Server, както е показано в T-SQL заявката по-долу:
INSERT INTO [AdventureWorks].[dbo].[Employee_Main] ([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address]) SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address] FROM TEST...Employee_Main$
Съветник за експортиране/импортиране на SQL сървър
Помощникът за експортиране и импортиране на SQL Server ни предоставя прост интерфейс за създаване на пакети на SQL Server Integration Service, които могат да бъдат използвани веднага или запазени за по-късна употреба. Тези пакети позволяват импортиране и експортиране на данни от голямо разнообразие от източници на данни, като се започне от обикновени плоски файлове и се завърши с по-сложни машини за бази данни.
Помощникът за експортиране и импортиране може да се използва например за импортиране на данни от източник на данни на Excel в съществуваща таблица на база данни. Следните стъпки описват този процес:
- В Object Explorer на SQL Server Management Studio щракнете с десния бутон върху базата данни AdventureWorks, която съдържа таблицата, в която ще запишете данните. След това изберете Импортиране на данни опция от Задачи подменю:
- Ще се отвори съветникът за импортиране и експортиране на SQL Server. В Избор на източник на данни прозорец, посочете типа на източника на данни. В този конкретен пример ще изберем Microsoft Excel и пълния път за желания файл на Excel. След като го посочите, щракнете върху Напред бутон:
- В Избор на дестинация прозорец, ще бъдете помолени да посочите типа дестинация, на която ще бъдат записани изходните данни. В нашия пример това е база данни на SQL Server. Също така ще бъдете помолени да посочите името на сървъра, идентификационните данни и името на базата данни, в която се намира целевата таблица. След като предоставите цялата тази информация, кликнете върху Напред за да продължите:
- В Посочете копие на таблица или заявка прозорец, ще имате опция или да копирате всички данни от източника в съществуваща или нова таблица, или да напишете персонализирана заявка за извличане на конкретен диапазон от данни. Когато решите това, щракнете върху Напред бутон:
- В Избор на изходни таблици и изгледи прозорец, посочете изходния лист или таблицата от източника на данни и таблицата местоназначение, в която ще бъдат записани изходните данни. Ще имате възможност да прегледате източника, да проверите съпоставянето на колоните между изходната и целевата таблица и да посочите дали данните трябва да бъдат добавени към съществуваща таблица или към новогенерирана таблица. Щракнете върху Напред бутон за продължаване:
- В пакета за запазване и изпълнение Window, имате опцията да запишете пакета SSIS, който е създаден в съветника за импортиране и експортиране, за да го стартирате незабавно или да го запишете за планиране или стартиране по-късно. Щракнете върху Напред бутон за продължаване:
- В Завършете съветника прозорец, ще видите обобщение за избраните опции и предоставените настройки. Щракнете върху Край бутон, за да започнете да копирате данните:
- След завършване на процеса на копиране, съветникът ще покаже броя на записите, копирани във всяка таблица. Ако няма грешки, можете да кликнете върху Затваряне бутон за затваряне на прозореца:Можете да видите от предишния пример, че съветникът за импортиране и експортиране може лесно да се използва за копиране на данни между различни типове на източници на данни и дестинации, без да се отчита връзката между таблиците. Ако таблицата има ограничение за външен ключ, което препраща към една от колоните на родителската таблица, трябва ръчно да управлявате реда на процеса на копиране на данни. Освен това, за да започнете нов процес на импортиране на данни, ще трябва да затворите съветника и да го отворите отново.
dbForge Data Pump
dbForge Data Pump е инструмент на трета страна, включен в SQL Server Management Studio като добавка. Може да се използва за лесно мигриране на данни между SQL Server и различни външни източници на данни. Позволява ви да импортирате и експортирате от 10+ често използвани формата на данни (текст, MS Excel, XML, CSV, JSON и др.) с редица разширени опции и шаблони, които могат да се използват за повтарящи се сценарии.
След като изтеглите dbForge Data Pump от страницата за изтегляне на Devart, ще трябва да го инсталирате на машината като добавка за SSMS инструмент, както е показано по-долу:
Експортиране на данни
dbForge Data Pump може да се използва в рамките на SSMS за експортиране на данни от таблица на база данни на SQL Server или за преглед на данни в 13 поддържани типа формати, включително HTML, Text, MS Excel, MS Excel 2007, MS Access, RTF, PDF, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7), SQL и JSON.
За да експортирате данни от конкретна таблица на SQL Server, следвайте стъпките по-долу:
- Свържете се с екземпляра на SQL Server чрез SSMS. От Objects Explorer щракнете с десния бутон върху базата данни, която съдържа изходната таблица, и изберете Експортиране на данни от помпа за данни подменю:
- В Формат за експортиране прозорец, изберете формата на файла, в който ще бъдат експортирани данните от изходната таблица, или заредете предварително записан шаблон. В нашия пример ще изберем MS Excel 2007. Щракнете върху Напред бутон за продължаване:
- В прозореца Източник прегледайте подробностите за връзката и изберете таблицата(ите), които съдържат изходните данни, които да бъдат експортирани. Кликнете върху Напред за да продължите:
- В Опции прозорец, проверете и задайте различните опции за персонализиране за таблицата на експортираните данни. След това щракнете върху Напред за да продължите:
- В Формати на данни прозорец под Колони раздел, изберете колоните, които ще бъдат експортирани, и прегледайте техните типове данни:Също така в Формати раздел, задайте формата на различните типове данни за избраните от вас колони. Щракнете върху Напред бутон за продължаване:
- В Настройки за печат на страница прозорец, можете да зададете различните опции за експортираните файлови страници за целите на печат. Кликнете върху Напред за да продължите:
- В Експортирани редове прозорец, посочете диапазон от редове, които да бъдат експортирани от таблицата източник, или изберете да експортирате всички редове на таблицата. Кликнете върху Напред за да продължите:
- Обработка на грешки прозорецът ви предоставя редица опции, които могат да се използват, за да посочите как да обработвате грешки, ако възникнат и къде да регистрирате резултатите от изпълнението. Кликнете върху Save Шаблон за да запазите настройките като шаблон, който да се използва в бъдеще, или натиснете Експортиране бутон, за да стартирате процеса на експортиране на данни, както е показано по-долу:По време на процеса на експортиране на данни Data Pump ще ви предостави информационни съобщения, които показват броя на записите, копирани от текущата таблица, както е показано по-долу:Когато процесът на експортиране на данни приключи успешно, ще се покаже обобщение за процеса на експортиране. Ще бъдат предоставени опции за отваряне на генерирания файл или съдържащата се папка и за експортиране на повече данни от същата страница, без да е необходимо да затваряте и отваряте отново инструмента:
Импортиране на данни
dbForge Data Pump може да се използва в рамките на SSMS за импортиране на данни в таблица на база данни на SQL Server. Поддържат се следните 9 широко използвани формата на данни:Text, MS Excel, MS Excel 2007, MS Access, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7) и JSON.
За да импортирате данни от лист на Excel в конкретна таблица на SQL Server, следвайте стъпките по-долу:
- Свържете се с екземпляра на SQL Server, като използвате SSMS. От Objects Explorer щракнете с десния бутон върху базата данни, която съдържа таблицата на целевата база данни, и изберете Импортиране Данни от Помпата за данни подменю:
- В Изходния файл прозорец, изберете формата на изходния файл или просто заредете предварително запазен шаблон, за да извършите процеса на импортиране. В нашия пример ще използваме Microsoft Excel 2007 и щракнете върху Преглед бутон, за да намерите листа на Excel. Щракнете върху Напред бутон, за да продължите:
- В Дестинация прозорец, прегледайте информацията за връзката и посочете дали данните трябва да бъдат импортирани в нова таблица или в съществуваща таблица от предоставения списък. Кликнете върху Напред за да продължите:
- В Опции прозорец, можете да зададете различни опции, които определят местоположението на заглавката и данните в изходния файл, с възможност за визуализация на данните на изходния файл преди импортиране. Кликнете върху Напред за да продължите:
- В Формати на данни прозорец, можете да коригирате формата на типа данни за различни текстови колони в изходния файл, преди да го импортирате в таблицата на базата данни. Кликнете върху Напред за да продължите:
- В Картографиране прозорец, можете да съпоставите колоните от изходния файл в таблицата на базата данни на местоназначението, с възможност за визуализация на данните след извършване на промяната. Кликнете върху Напред за да продължите:
- В Режимите прозорец, можете да зададете режима на импортиране на данни, като например добавяне на данните към съществуващите данни в таблицата на местоназначението и извършване на групово вмъкване или импортиране на данните с една транзакция. Кликнете върху Напред за да продължите:
- В Изход прозорец, можете да посочите да генерирате или запишете скрипта за импортиране на данни или да продължите с процеса на импортиране на данни незабавно. Кликнете върху Напред за да продължите:
- Обработка на грешки прозорецът ви предоставя редица опции, които могат да се използват, за да посочите как да се държите, ако възникнат грешки и къде да регистрирате резултатите от изпълнението. Кликнете върху Запазване на шаблона за да запазите настройките като шаблон, който да се използва в бъдеще, или Импортиране бутон, за да стартирате процеса на импортиране на данни, както е показано по-долу:
- Когато процесът на импортиране завърши успешно, съветникът ще покаже обобщение за броя на импортираните записи. Ще имате възможност да прегледате регистрационния файл за грешки в случай, че възникнат грешки и да импортирате други файлове от същия прозорец, без да е необходимо да затваряте и отваряте отново инструмента:
От предишния пример става ясно, че инструментът dbForge Data Pump ни предоставя възможността да импортираме и експортираме данни към и от различни файлови формати с данни. Помощникът, предназначен за това, е лесен за конфигуриране, богат с различни опции и не изисква усилия за разработка. Заслужава да се опита!