SQL SERVER массовая загрузка - PullRequest
1 голос
/ 13 марта 2019

Я работаю на SQL Server 2017. Мне нужно импортировать 20 текстовых файлов в одну таблицу.Каждый текстовый файл имеет одинаковый тип данных и имя столбца.Я проверил данные, и они в том же порядке.Мне нужно импортировать в таблицу SQL и создать новый столбец, в последнем столбце говорится, что данные

от строки 1 до строки 150 поступают из "textfile-1"

, строки от 151 до строки 300данные поступают из "textfile-2"

, Row301 в Row400 данные поступают из "textfile-3"

У нас нет таких пакетов, как SSIS.

Можем ли мы сделать это в Advance SQL Query?если да, может кто-нибудь, пожалуйста, направьте меня

1 Ответ

1 голос
/ 14 марта 2019

SQL BULK INSERT

Прежде всего вы должны убедиться, что структура таблицы идентична структуре файла.

Вы можете сохранить путь к текстовым файлам внутри таблицы, зациклившисьэти значения с помощью курсора, динамически построить команду и затем выполнить команду:

DECLARE @strQuery VARCHAR(4000)
DECLARE @FileName VARCHAR(4000)

DECLARE file_cursor CURSOR  
    FOR SELECT FilePath FROM FilesTable
OPEN file_cursor 
FETCH NEXT FROM file_cursor INTO @FileName;  

WHILE @@FETCH_STATUS = 0  
BEGIN 

    SET @strQuery = 'BULK INSERT SchoolsTemp
        FROM ''' + @FileName + '''
        WITH
        (
        FIELDTERMINATOR = '','',  --Columns delimiter
        ROWTERMINATOR = ''\n'',   --Rows delimiter
        TABLOCK
        )

    EXEC(@strQuery)

    FETCH NEXT FROM file_cursor INTO @FileName;

END

CLOSE file_cursor 
DEALLOCATE file_cursor 

Дополнительная информация


Подход C #: библиотека классов SchemaMapper

Если вы знакомы с C #, недавно я запустил новый проект на Github, который является библиотекой классов, разработаннойиспользуя C #.Вы можете использовать его для импорта табличных данных из Excel, Word, PowerPoint, Text, CSV, HTML, JSON и XML в единую таблицу SQL-сервера.проверить это по адресу:

Вы можете следовать этой странице вики для пошагового руководства:

...