Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 чтение данных с файла и insert в таблицу SQL2008  [new]
talich2005
Member

Откуда:
Сообщений: 275
привет

каким образом прочитать строки в .txt файле и занести в таблицу в SQL 2008

пример:

файл - test.txt

11111111 | 33333333| 44444444
222222222| 666666666| 67777777


таблице должны дыть эти строки



спасибо
20 ноя 11, 18:50    [11627939]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
bcp, bulk insert, SSIS, OPENROWSET
20 ноя 11, 18:55    [11627951]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
talich2005
Member

Откуда:
Сообщений: 275
пробовал

SELECT * FROM OPENROWSET (BULK 'c:\backups\test.txt', SINGLE_CLOB)

выдает ошибку

Msg 4860, Level 16, State 1, Line 1
Cannot bulk load. The file "c:\backups\test" does not exist.

а она там реально есть , этот файл
20 ноя 11, 19:12    [11628003]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
talich2005
Member

Откуда:
Сообщений: 275
вот еще выдает

Msg 491, Level 16, State 1, Line 1
A correlation name must be specified for the bulk rowset in the from clause.
20 ноя 11, 19:16    [11628011]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
talich2005
пробовал

SELECT * FROM OPENROWSET (BULK 'c:\backups\test.txt', SINGLE_CLOB)

выдает ошибку

Msg 4860, Level 16, State 1, Line 1
Cannot bulk load. The file "c:\backups\test" does not exist.

а она там реально есть , этот файл


где есть!? на вашей рабочей станции или на сервере, где сервер БД!?
УЗ от которой стартует сиквел, тоже имеет доступ к этому файлу?!
20 ноя 11, 19:21    [11628025]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
talich2005
Member

Откуда:
Сообщений: 275
естественно на сервере где крутится сикул
20 ноя 11, 19:28    [11628043]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
talich2005
Member

Откуда:
Сообщений: 275
вобщем заработал

SELECT * FROM OPENROWSET(BULK 'C:\backups\test.txt.txt', SINGLE_CLOB) AS FileCode

только он выдает все в одну строку ,222222222| 666666666| 6777777711111111 | 33333333| 44444444

как сделать чтоб выдавал как в файле
20 ноя 11, 20:52    [11628304]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
talich2005
как сделать чтоб выдавал как в файле
bcp, bulk insert
21 ноя 11, 02:54    [11629210]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
talich2005, Например, для BCP сделать заранее файл формата импорта... Сложно изучить справку?
21 ноя 11, 03:01    [11629211]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
talich2005
вобщем заработал

SELECT * FROM OPENROWSET(BULK 'C:\backups\test.txt.txt', SINGLE_CLOB) AS FileCode

только он выдает все в одну строку ,222222222| 666666666| 6777777711111111 | 33333333| 44444444

как сделать чтоб выдавал как в файле
Вам не нужно использовать SINGLE_CLOB - он как раз означает чтение файла в единственное поле.

Посмотрите в хелпе пример:
Д. Использование поставщика BULK функции OPENROWSET совместно с файлом форматирования для получения строк из текстового файла
SELECT a.* 
FROM OPENROWSET( BULK 'c:\test\values.txt', FORMATFILE = 'c:\test\values.fmt') AS a;
21 ноя 11, 08:49    [11629405]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
AndreTM,
BULK INSERT dbo.MyTable FROM 'c:\test\values.txt' WITH (FIELDTERMINATOR = '|');
21 ноя 11, 14:17    [11631915]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
talich2005
Member

Откуда:
Сообщений: 275
спасибо Minor, помогло

сделал так

create table #source
(test varchar(250))
BULK INSERT #source
FROM 'C:\flat\test.txt' WITH (FIELDTERMINATOR = '|');

----Использование таблицы на запросы---
select * from #source

---удаление временной таблицы
drop table #source


тема закрыта.
27 ноя 11, 12:52    [11666316]     Ответить | Цитировать Сообщить модератору
 Re: чтение данных с файла и insert в таблицу SQL2008  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
talich2005
create table #source (test varchar(250))
BULK INSERT #source 
FROM 'C:\flat\test.txt'  WITH (FIELDTERMINATOR = '|');
--Использование таблицы на запросы---
select * from #source 
--удаление временной таблицы
drop table #source
Изврат, если нужно ради одного запроса, вариант alexeyvg намного лучше.
27 ноя 11, 15:47    [11666845]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить