SSIS 2008R2 - бредовое поведение при импорте
От: senglory  
Дата: 24.01.13 08:54
Оценка:
Есть таблица с таким определением:

CREATE TABLE [dbo].[Participants](
        [id] [bigint] IDENTITY(1,1) NOT NULL,
        [Juridical Person] [bit] NOT NULL,
        [CompanyName] [nvarchar](max) NOT NULL,
        [CompanyNameRUS] [nvarchar](max) NULL,
        [AreaCode] [nvarchar](max) NOT NULL,
        [PostCode] [nvarchar](max) NOT NULL,
        [Country] [nvarchar](max) NOT NULL,
        [City] [nvarchar](max) NOT NULL,
        [Address] [nvarchar](max) NOT NULL,
        [Telephone] [nvarchar](max) NOT NULL,
        [ContactName] [nvarchar](max) NOT NULL,
        [ContactNameRUS] [nvarchar](max) NULL,
        [ContactEmail] [nvarchar](max) NULL,
        [INN] [nvarchar](max) NULL,
        [KPP] [nvarchar](max) NULL,
        [OKPO] [nvarchar](max) NULL,
        [OGRN] [nvarchar](max) NULL,
        [UrAddr] [nvarchar](max) NOT NULL,
        [RsVAL] [nvarchar](max) NULL,
        [RsRUR] [nvarchar](max) NULL,
        [BankName] [nvarchar](max) NULL,
        [BIK] [nvarchar](max) NULL,
        [KS] [nvarchar](max) NULL,
        [RS] [nvarchar](max) NULL,
        [Position] [nvarchar](max) NULL,
        [PassSer] [nvarchar](max) NULL,
        [PassNum] [nvarchar](max) NULL,
        [IssueWho] [nvarchar](max) NULL,
        [IssueWhen] [datetime] NULL,
PRIMARY KEY CLUSTERED 
(
        [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


Далее все файлы в аттаче.

Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает. Что этой твари надо чтобы она не давилась на импорте элементарных текстовых файлов?
Re: SSIS 2008R2 - бредовое поведение при импорте
От: BlackEric http://black-eric.lj.ru
Дата: 24.01.13 11:57
Оценка:
Здравствуйте, senglory, Вы писали:


S>Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает. Что этой твари надо чтобы она не давилась на импорте элементарных текстовых файлов?


Он обрезает какие-то поля. Сделайте импорт через обычный bcp
https://github.com/BlackEric001
Re: SSIS 2008R2 - бредовое поведение при импорте
От: bl-blx Россия http://yegodm.blogspot.com
Дата: 24.01.13 12:19
Оценка:
Здравствуйте, senglory, Вы писали:

S>Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает. Что этой твари надо чтобы она не давилась на импорте элементарных текстовых файлов?


Кодировка-то текстового файла какая? Может, пакет другую ожидает?
El pueblo unido jamás será vencido.
Re[2]: SSIS 2008R2 - бредовое поведение при импорте
От: senglory  
Дата: 24.01.13 16:30
Оценка:
Здравствуйте, bl-blx, Вы писали:

BB>Здравствуйте, senglory, Вы писали:


S>>Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает. Что этой твари надо чтобы она не давилась на импорте элементарных текстовых файлов?


BB>Кодировка-то текстового файла какая? Может, пакет другую ожидает?


Unicode. В пакете сказано брать Unicode.
Re: SSIS 2008R2 - бредовое поведение при импорте
От: senglory  
Дата: 24.01.13 18:06
Оценка:
В дополнение, еще и при выгрузке в текстовый файл возникли проблемы. В аттаче — пакет экспорта + скриншот его бреда. Особенно умиляет требование конвертировать text в ntext явно и игнорирование явно заданного конвертора.
Re[3]: SSIS 2008R2 - бредовое поведение при импорте
От: bl-blx Россия http://yegodm.blogspot.com
Дата: 24.01.13 19:17
Оценка:
Здравствуйте, senglory, Вы писали:

S>Здравствуйте, bl-blx, Вы писали:


BB>>Здравствуйте, senglory, Вы писали:


S>>>Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает. Что этой твари надо чтобы она не давилась на импорте элементарных текстовых файлов?


BB>>Кодировка-то текстового файла какая? Может, пакет другую ожидает?


S>Unicode. В пакете сказано брать Unicode.


Ммм...По-моему, там указано win1251, нет?
<DTS:Property DTS:Name="CreationName">FLATFILE</DTS:Property>
...
<DTS:Property DTS:Name="CodePage">1251</DTS:Property>
...
<DTS:Property DTS:Name="Unicode">-1</DTS:Property>

А сам файл в UTF-16 Little Endian.
El pueblo unido jamás será vencido.
Re[4]: SSIS 2008R2 - бредовое поведение при импорте
От: senglory  
Дата: 24.01.13 21:11
Оценка:
Здравствуйте, bl-blx, Вы писали:

BB>Здравствуйте, senglory, Вы писали:


S>>Здравствуйте, bl-blx, Вы писали:


BB>>>Здравствуйте, senglory, Вы писали:


S>>>>Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает. Что этой твари надо чтобы она не давилась на импорте элементарных текстовых файлов?


BB>>>Кодировка-то текстового файла какая? Может, пакет другую ожидает?


S>>Unicode. В пакете сказано брать Unicode.


BB>Ммм...По-моему, там указано win1251, нет?

BB>
BB><DTS:Property DTS:Name="CreationName">FLATFILE</DTS:Property>
BB>...
BB><DTS:Property DTS:Name="CodePage">1251</DTS:Property>
BB>...
BB><DTS:Property DTS:Name="Unicode">-1</DTS:Property>
BB>

BB>А сам файл в UTF-16 Little Endian.

Странно, но я при экспорте указал экспортировать в юникод. И FAR опознает Participants.txt как юникодный. Тогда я совсем ничего не понимаю — как должен в моем случае выглядеть этот package чтобы таблица экспортировлась, а ругани не было?
Re: SSIS 2008R2 - бредовое поведение при импорте
От: Olaf Россия  
Дата: 25.01.13 02:55
Оценка: 1 (1)
Здравствуйте, senglory, Вы писали:

S>Есть таблица с таким определением:


S>Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает.


В исходном вашем пакете output тип данных для поля Address указан Unicode string длиной 50 символов, при этом длина значения адрес "МЕЖЕВОЙ КАНАЛ, ДОМ 5 AX, БАЛТИЙСКИЙ МОРСКОЙ ЦЕНТР, ОФИС 715" 59 символов (см. Connection Manager для файла -> вкладка Advanced -> поле Address) Поэтому либо увеличивайте длину для поля Address, либо используйте тип Unicode stream.
Re[2]: SSIS 2008R2 - бредовое поведение при импорте
От: senglory  
Дата: 25.01.13 19:33
Оценка:
Здравствуйте, Olaf, Вы писали:

O>Здравствуйте, senglory, Вы писали:


S>>Есть таблица с таким определением:


S>>Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает.


O>В исходном вашем пакете output тип данных для поля Address указан Unicode string длиной 50 символов, при этом длина значения адрес "МЕЖЕВОЙ КАНАЛ, ДОМ 5 AX, БАЛТИЙСКИЙ МОРСКОЙ ЦЕНТР, ОФИС 715" 59 символов (см. Connection Manager для файла -> вкладка Advanced -> поле Address) Поэтому либо увеличивайте длину для поля Address, либо используйте тип Unicode stream.


Вы про destination connection или про source?
Re[3]: SSIS 2008R2 - бредовое поведение при импорте
От: Olaf Россия  
Дата: 26.01.13 04:27
Оценка:
Здравствуйте, senglory, Вы писали:

S>Вы про destination connection или про source?


Если быть точным, то я имел ввиду сам Connection с именем SourceConnectionFlatFile, в котором определяются параметры для извлечения данных. Двойным кликом открываете SourceConnectionFlatFile и на вкладке Advanced переопределяете свойства для колонки Address. Сейчас у вас там…
DataType: Unicode string [DT_WSTR]
OutputColumnWidth: 50
Re[2]: SSIS 2008R2 - бредовое поведение при импорте
От: senglory  
Дата: 26.01.13 19:02
Оценка:
Здравствуйте, Olaf, Вы писали:

O>Здравствуйте, senglory, Вы писали:


S>>Есть таблица с таким определением:


S>>Есть текстовый файл Participants.txt , к-рый я хочу закачать в эту таблицу. Есть также DTSX файл с определением схемы закачки. А в файле SSIS error — собственно то, что оно мне выдает.


O>В исходном вашем пакете output тип данных для поля Address указан Unicode string длиной 50 символов, при этом длина значения адрес "МЕЖЕВОЙ КАНАЛ, ДОМ 5 AX, БАЛТИЙСКИЙ МОРСКОЙ ЦЕНТР, ОФИС 715" 59 символов (см. Connection Manager для файла -> вкладка Advanced -> поле Address) Поэтому либо увеличивайте длину для поля Address, либо используйте тип Unicode stream.


Поменял там на тип Unicode text stream [DT_NTEXT] с неограниченной длинной — результат тот же — the output column "Address" failed because truncation........ Что еще может быть проблемой?
Re: SSIS 2008R2 - бредовое поведение при ЭКСПОРТЕ
От: senglory  
Дата: 26.01.13 21:04
Оценка:
Там бред творится и при экспорте. Формат вывода — текстовый файл в Unicode, в исходной таблице поле Telephone имеет тип varchar(max). Так эта тупица несет вот такую пургу:

Error 0xc020802f: Data Flow Task 1: The data type for "input column "Telephone" (121)" is DT_TEXT, which is not supported with Unicode files. Use DT_NTEXT instead and convert the data to DT_TEXT using the data conversion component.
(SQL Server Import and Export Wizard)


Не уметь строку из ASCII перевести в Unicode самой — это просто "рука-лицо"... Но более того, когда в визарде говорю, что для этой колонки надо использовать не DT_TEXT, а Unicode text stream (DT_NTEXT), то пурга все равно сохраняется. Что ей вообще от меня надо? Чтобы я мало того что в SSMS слепил package, так потом его еще и в студии отредактировал?????
ssis
Re[3]: SSIS 2008R2 - бредовое поведение при импорте
От: Olaf Россия  
Дата: 27.01.13 05:17
Оценка:
Здравствуйте, senglory, Вы писали:

S>Поменял там на тип Unicode text stream [DT_NTEXT] с неограниченной длинной — результат тот же — the output column "Address" failed because truncation........ Что еще может быть проблемой?


Выкладывайте, что у вас получилось. Я правил ваш пакет в студии (поменял длину или тип), как результат успешно загрузилась одна запись.
Re[2]: SSIS 2008R2 - бредовое поведение при ЭКСПОРТЕ
От: Olaf Россия  
Дата: 27.01.13 05:26
Оценка:
Здравствуйте, senglory, Вы писали:

S>Не уметь строку из ASCII перевести в Unicode самой — это просто "рука-лицо"... Но более того, когда в визарде говорю, что для этой колонки надо использовать не DT_TEXT, а Unicode text stream (DT_NTEXT), то пурга все равно сохраняется. Что ей вообще от меня надо? Чтобы я мало того что в SSMS слепил package, так потом его еще и в студии отредактировал?????


Я не пользовался Wizard’ом, поэтому не могу сказать, как там все происходит. Попробуйте удалить destination файл и создать заново, либо вообще заново создайте пакет. Причем укажите для приведения тип Unicode, на худой конец допилите в студии.
Re[3]: SSIS 2008R2 - бредовое поведение при ЭКСПОРТЕ
От: senglory  
Дата: 27.01.13 08:43
Оценка:
Здравствуйте, Olaf, Вы писали:

O>Здравствуйте, senglory, Вы писали:


S>>Не уметь строку из ASCII перевести в Unicode самой — это просто "рука-лицо"... Но более того, когда в визарде говорю, что для этой колонки надо использовать не DT_TEXT, а Unicode text stream (DT_NTEXT), то пурга все равно сохраняется. Что ей вообще от меня надо? Чтобы я мало того что в SSMS слепил package, так потом его еще и в студии отредактировал?????


O>Я не пользовался Wizard’ом, поэтому не могу сказать, как там все происходит. Попробуйте удалить destination файл и создать заново, либо вообще заново создайте пакет. Причем укажите для приведения тип Unicode, на худой конец допилите в студии.


Вот — DTSX package, допиленый в студии
Вот — определение исходной таблицы

А вот что мне приходит при выполнении экспорта
Re[4]: SSIS 2008R2 - бредовое поведение при ЭКСПОРТЕ
От: Olaf Россия  
Дата: 27.01.13 11:59
Оценка:
Здравствуйте, senglory, Вы писали:

S>Вот — DTSX package, допиленый в студии

S>Вот — определение исходной таблицы

S>А вот что мне приходит при выполнении экспорта


По всей видимости, где-то обновились метаданные, которые не были учтены в пакете, т.е. пакет предполагает, что это поле есть и готов с ним выполнять операции, а по факту его нет.

Что сделал я:
1. Создал в студии SSIS проект, включил в него ваш пакет
2. Создал БД tccash и таблицу RequestDetails
3. Открыл SourceConnectionOLEDB и поменял сервер на свой
4. Зашел в Data Flow компонент Destination — Participants-J_txt и удалил все невалидные ссылки (в листбоксе выбрал пункт Delete invalid column reference)
5. Открыл Data Flow компонент Destination — Participants-J_txt еще раз и убедился, что маппинг наладился (все колонки источника и назначения связаны)
6. Сохранил пакет и запустил его, в результате создался файл C:\ Participants-J.txt с заголовком, без данных

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