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

Откуда:
Сообщений: 311
Есть файл в котором
"1","50,000"
Как описать поле в форматном XML файле ?
чтоб получить
Col1Col2
150.000
29 июн 11, 12:07    [10891757]     Ответить | Цитировать Сообщить модератору
 Re: FormaFile ?  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Greenhorn,

CREATE TABLE tstTable (Col1 INT, Col2 FLOAT)

-- Вывод в файл d:\myTestFormatFiles.Xml
EXEC xp_cmdshell 'bcp _имя_базы_..tstTable format nul -S _имя_сервера_ -c -t, -x -f d:\myTestFormatFiles.Xml -T'

DROP TABLE tstTable

Легким движением руки...
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="12"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="30"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLINT"/>
<COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLFLT8"/>
</ROW>
</BCPFORMAT>
29 июн 11, 12:19    [10891898]     Ответить | Цитировать Сообщить модератору
 Re: FormaFile ?  [new]
Greenhorn
Member

Откуда:
Сообщений: 311
kDnZP,


Col1 Col2
"1" "50,000"
Двойные кавычки как убрать ?
29 июн 11, 12:32    [10892037]     Ответить | Цитировать Сообщить модератору
 Re: FormaFile ?  [new]
mike909
Member

Откуда:
Сообщений: 662
Greenhorn
kDnZP,


Col1 Col2
"1" "50,000"
Двойные кавычки как убрать ?


Усложним задачу
Пусть будет файл такой:
 "1" , "50,000" ,"2"  
С лишними пробелами между полями и обязательным CR/LF
То
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<!--"6507","4953951464","380682554629","7","2011-05-01 00:02:13","6","50,000","300,000","1"/-->
<FIELD ID="Q1" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="10" />
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="12" />
<FIELD ID="Q2" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="10" />
<FIELD ID="Q3" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="10" />
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="30" />
<FIELD ID="Q4" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="10" />
<FIELD ID="Q5" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="10" />
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="10"/>
<FIELD ID="EOF" xsi:type="CharTerm" TERMINATOR='/c/n' />
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="3" NAME="Col3" xsi:type="SQLNVARCHAR"/>
</ROW>
</BCPFORMAT>
Получаем
Col1	Col2	Col3
1 50,000 2
Пойдет ?
29 июн 11, 13:23    [10892553]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить