Вставить текст в столбец ТЕКСТ из файла - PullRequest
1 голос
/ 02 ноября 2010

Какой самый простой способ - желательно просто с помощью SQL Server Management Studio - вставить текст в столбец типа Text (text, ntext, varchar(max), nvarchar(max)) из файла.

Скажем, есть таблица

textFileContent(id, textData)

и хотите сделать

insert into textFileContent(textData)
values([data read from a file, complete file content])

Также возможно ли выполнить обновление аналогичным образом?Например,

update textFileContent
set textData = [data read from a file,  complete file content]
where id = 1

Ответы [ 3 ]

2 голосов
/ 02 ноября 2010

Вы можете использовать xp_cmdshell:

create table #mytable 
(
    id int IDENTITY(1,1) NOT NULL,
    result nvarchar(MAX) NULL
)

insert into #mytable (result)
exec xp_cmdshell 'type c:\somefile.txt' -- this may require cmd before it

Это должно вывести текст в таблицу, где жесткие возвраты представляют новые записи.

В противном случае, если у вас есть SQL Express, вы ограниченыв BCP и BULK INSERT.В BCP есть команды, если вы сначала создаете свою таблицу для создания файла формата.Помните, если Unicode, что ваши разделители состоят из двух символов \n\0\r\0 (или что-то в этом роде)

В противном случае вы можете использовать SSIS, если у вас стандарт SQL или выше.Вы создаете поток данных, перетаскиваете значок для входного текстового файла, перетаскиваете значок для таблицы назначения и нажимаете кнопку воспроизведения.Чтобы заставить это работать с SQL, вам нужно вызвать его с чем-то вроде этого xp_cmdshell выше.SSIS - это визуальное представление о том, что вы будете делать с BCP в отношении текстовых файлов.

0 голосов
/ 02 ноября 2010

Вы можете импортировать данные из текстового файла, используя OPENROWSET.Но для этого вам может потребоваться определить формат файла.Вы можете найти больше помощи здесь

0 голосов
/ 02 ноября 2010

Ответ немного зависит от вашего варианта использования. Я предполагаю, что вам нужно загрузить данные в начале проекта ... если вам нужно "подать" данные на SQL-сервер, то я бы получил другой ответ.

Вот самые простые варианты:

  • Переформатируйте ваш текстовый файл, чтобы он стал оператором SQL. Например, если у вас есть строка текста, которую вы хотите вставить в таблицу с именами, вы можете поставить insert into names value(' в начале каждой строки и ') в конце. Затем скопируйте и вставьте это в менеджер и запустите.

  • использовать массовую вставку ( ссылка )

  • использовать SSIS / DTS ( ссылка )

...