Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Bulk Insert без разделителя, разделять поля по длинне поля 
V
    Опции темы
helflip
  Дата 6.5.2011, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 14.5.2006
Где: Moscow

Репутация: 1
Всего: 4



Всем привет.

Помогите с запросом пожалуйста, с bulk никогда не работал не могу сообразить что то как сделать инсерт с ограничением длины поля.

Сама задача:
Необходимо в MSSQL загрузить в таблицу файл с данными (данные без разделителей) с помощью bulk insert

Пример таблицы:
Код

CREATE TABLE TTT
        (
        F1 varchar(255) NOT NULL,
        F2 varchar(255) NOT NULL,
        F3 varchar(255) NOT NULL,
        F4 varchar(255) NOT NULL,
        F5 varchar(255) NOT NULL
        )


Формат длин полей в файле:
F1        3
F2        5
F3        7
F4        4
F5        2

Для примера, содержимое входного файла:
123 12345 1234567 1234 12 321 54321 7654321 4321 21 123 123451234567123412 


то есть данные в табличке должны выглядеть следующим образом:
F1      F2         F3            F4       F5
123    12345  1234567  1234   12
321    54321  7654321  4321   21
123    12345  1234567  1234   12 


Заранее спасибо.
--------------------
 
PM MAIL   Вверх
helflip
Дата 9.5.2011, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 14.5.2006
Где: Moscow

Репутация: 1
Всего: 4



Ребят, намекните как решать данную задачу. Куда смотреть.

Спасибо.
--------------------
 
PM MAIL   Вверх
helflip
  Дата 11.5.2011, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 14.5.2006
Где: Moscow

Репутация: 1
Всего: 4



Пришел к решению сам.

Инсерт делается через форматный файл.
кому интересно вот что сделал:

Сам запрос
Код

use my_db

Bulk Insert TTT From 'C:\datafile.txt'
With (FORMATFILE = 'C:\MyFormatFile.xml')

select * from ttt
GO



файл datafile.txt
123123451234567123412321543217654321432121123123451234567123412

файл MyFormatFile.xml
Код

<?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 xsi:type="CharFixed" ID="1" LENGTH="3" />
<FIELD xsi:type="CharFixed" ID="2" LENGTH="5" />
<FIELD xsi:type="CharFixed" ID="3" LENGTH="7" />
<FIELD xsi:type="CharFixed" ID="4" LENGTH="4" />
<FIELD xsi:type="CharFixed" ID="5" LENGTH="2" />
</RECORD>
- <ROW>
<COLUMN SOURCE="1" NAME="F1" xsi:type="SQLSMALLINT" />
<COLUMN SOURCE="2" NAME="F2" xsi:type="SQLNVARCHAR" />
<COLUMN SOURCE="3" NAME="F3" xsi:type="SQLNVARCHAR" />
<COLUMN SOURCE="4" NAME="F4" xsi:type="SQLNVARCHAR" />
<COLUMN SOURCE="5" NAME="F5" xsi:type="SQLNVARCHAR" />
</ROW>
</BCPFORMAT>

--------------------
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1092 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.