2010-11-02 3 views
0

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

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

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 
+1

использовать SSIS/DTS вместо этого? – brumScouse

+1

ТЕКСТ, NTEXT, IMAGE ** устарели ** на SQL Server 2005 - вам следует избегать их использования, если это возможно (особенно если вы создаете что-то новое). –

ответ

0

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

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

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

  • использование объемной вставки (link)

  • использование SSIS/DTS (link)

+0

благодарит Хогана, поэтому, полагая, что у меня есть файл на сервере, скажите c: \ testFile.txt, чтобы загрузить полный контент в одну строку: «bulk insert txtFileContent from c: \ r781.txt»? – padn

+0

В этом случае я лично просто изменил бы файл и запустил его в диспетчере - мне всегда нужно использовать пробную версию и ошибку, чтобы заставить объемную вставку работать. Сделай это. Сначала сделайте копию своего стола и проверьте, пока он не работает, прежде чем идти на золото. – Hogan

+0

У меня был большой успех с SSIS и XML на очень больших файлах, которые имеют несколько полей. –

0

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

1

Вы можете использовать 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 в отношении текстовых файлов.

Смежные вопросы