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

Откуда:
Сообщений: 94
Подскажите пожалуйста, как используя BCP можно вставить файл (с диска) в БД (в поле image)

В примере из BoL у меня ошибка (вроде как лишняя точка)
Пример там такой:

bcp pubs..bitmap in test.doc -Usa -Ppassword -Sservername

Я из этого примера сделала свой:

bcp workflow30spb..attachments in aps.doc

Если есть возожность хотелось бы хотя бы прочитать про это (желательно на русском языке, но и на английском тоже было бы не плохо)
9 ноя 04, 10:07    [1090440]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Glory
Member

Откуда:
Сообщений: 104760
В примере из BoL у меня ошибка (вроде как лишняя точка)
Ну так привидите вроде сообщение о вроде ошибке
9 ноя 04, 10:14    [1090456]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Eugenia
Member

Откуда:
Сообщений: 94
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '.'.

Вот собственно ошибка.
9 ноя 04, 10:16    [1090464]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Eugenia
В примере из BoL у меня ошибка (вроде как лишняя точка)
Пример там такой:

bcp pubs..bitmap in test.doc -Usa -Ppassword -Sservername
А эта строчка набиралась в QA?
9 ноя 04, 10:20    [1090479]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Eugenia
Member

Откуда:
Сообщений: 94
Да, строчка набиралась в QA

Строчка была эта. (с моей таблицей)

bcp workflow30spb..attachments in aps.doc
9 ноя 04, 10:42    [1090563]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Дмитрий Ц.
Member

Откуда:
Сообщений: 74
Укажите имя собственника таблицы, bcp не понимает такой ситаксис.
9 ноя 04, 10:46    [1090579]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Да, строчка набиралась в QA
bcp.exe - это утилита командной строки. А не команда TSQL.
9 ноя 04, 10:51    [1090604]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Дмитрий Ц.
Member

Откуда:
Сообщений: 74
Glory
Да, строчка набиралась в QA
bcp.exe - это утилита командной строки. А не команда TSQL.


Конечно. Именно по этому надо использовать полний синтаксис database.owner.object
9 ноя 04, 10:56    [1090634]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Именно по этому надо использовать полний синтаксис database.owner.object
Необязательно.
9 ноя 04, 10:59    [1090644]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Eugenia
Member

Откуда:
Сообщений: 94
А BULK INSERT?

BULK INSERT workflow30spb..table1 FROM 'E:\aps.doc'

Такая команда дает ошибку:
Server: Msg 4866, Level 17, State 66, Line 1
Bulk Insert fails. Column is too long in the data file for row 1, column 1. Make sure the field terminator and row terminator are specified correctly.
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'STREAM' reported an error. The provider did not give any information about the error.
OLE DB error trace [OLE/DB Provider 'STREAM' IRowset::GetNextRows returned 0x80004005: The provider did not give any information about the error.].
The statement has been terminated.

table1 - это таблица в которой только одно поле типа image
9 ноя 04, 10:59    [1090647]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Glory
Member

Откуда:
Сообщений: 104760
А BULK INSERT?
И как следует понимать этот вопрос ?
Что есть BULK INSERT и как он работает написано в BOL.
9 ноя 04, 11:01    [1090658]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Eugenia
Member

Откуда:
Сообщений: 94
Возник новый вопрос
Если я хочу использовать вставку файла в хранимой процедуре через cmdline, то как мне передать параметры (размер файла)?

declare @cmdline varchar(255)
set @cmdline='bcp workflow30spb..table1 in e:\aps.doc -Uwebuser -Palkvalonde -Sizengard'
exec master.dbo.xp_cmdshell @cmdline
9 ноя 04, 12:25    [1091018]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Glory
Member

Откуда:
Сообщений: 104760
то как мне передать параметры (размер файла)?
Не совсем понятно куда вы собственно хотите передать - и зачем утилите bcp вдруг понадобился размер файла ?
9 ноя 04, 13:03    [1091242]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Eugenia
Member

Откуда:
Сообщений: 94
Это из БоЛ-а

Importing Image Data
It is possible to bulk copy a data file as image data into an instance of SQL Server. The command to load the data file Test.doc into the bitmap table in the pubs database using the bcp utility is:

bcp pubs..bitmap in test.doc -Usa -Ppassword -Sservername

bcp prompts:

Enter the file storage type of field c1 [image]:
Enter the prefix length of field c1 [4]: 0
Enter length of field c1 [4096]: 5578
Enter the field terminator [none]:


Таким образом, я поняла что для того чтобы записать файл в базу мне надо задать отпределенные параметры для bcp.

Вопрос состоит в том как мне определить length of field c1, если по умолчанию мне предлагается 0 (этот вывод сделан после проверки работы строки - bcp workflow30spb..table1 in e:\aps.doc -Uwebuser -Palkvalonde -Sizengard в cmd)
9 ноя 04, 13:38    [1091439]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Glory
Member

Откуда:
Сообщений: 104760
Таким образом, я поняла что для того чтобы записать файл в базу мне надо задать отпределенные параметры для bcp.
Эти данные задаются с помощью format file, а не с помощью параметра утилиты
9 ноя 04, 13:41    [1091452]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Eugenia
Member

Откуда:
Сообщений: 94
format file должен быть для каждого файла разным. Или я не права?
Опять же формат файл создается при помощи bcp.
9 ноя 04, 13:44    [1091458]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Glory
Member

Откуда:
Сообщений: 104760
format file должен быть для каждого файла разным. Или я не права?
Если файлы имеют разный формат, то разумеется format file тоже должен быть разным. Ведь он описывает структуру данных.
9 ноя 04, 13:47    [1091470]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Eugenia
Member

Откуда:
Сообщений: 94
т.е. для файла .doc - будет один файл-формат
для .pdf - другой и т.д.?
и для каждого формата надо отдельно делать файл-формат?


А в чем будет разница создания формат-файла для разных типов?
в БоЛ-е я нашла только этот пример:
Using the BULK INSERT statement, a format file needs to be created first and then used to provide the format information. To create the format file, use the bcp utility:

bcp pubs..bitmap out c:\bitmap.txt -Sservername -Usa -Ppassword

The bcp utility prompts for the file storage type, prefix length, field length, and field terminator of each column of bitmap. The values for the c1 column are listed in this table.

Prompt Value
File storage type Image
Prefix length 0
Field length 5578
Field terminator None

Разница вроде бы (на мой взгляд) в "field length". Или нет?
9 ноя 04, 14:15    [1091610]     Ответить | Цитировать Сообщить модератору
 Re: BCP - вставка файла в базу  [new]
Glory
Member

Откуда:
Сообщений: 104760
т.е. для файла .doc - будет один файл-формат
для .pdf - другой и т.д.?
и для каждого формата надо отдельно делать файл-формат?

Format file содержит описание
- какие столбцы содержит файл с данными
- как эти столбцы разделяются
- как разделяются записи
и тд.
А вовсе не описание Word-ий это файл или Acrobat-ий.
9 ноя 04, 14:18    [1091627]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить