Как экспортировать данные SSIS по стандарту SQL и импортировать с объемной вставкой на SQL Express?

StackOverflow https://stackoverflow.com/questions/734943

Вопрос

Я хотел бы использовать SSI для создания таблицы баз данных, а затем импортируйте их в различные распределенные установки SQL Express. Как вы можете догадаться, SSIS недоступен в экспресс -версии. Когда я делаю массовую вставку, это ошибки с:

Msg 4866, Level 16, State 8, Line 1 The bulk load failed. The column is too long in the data file for row 1, column 5. Verify that the field terminator and row terminator are specified correctly.

Сгенерированный файл представляет собой ASCII (1252) с Char (09) (TAB) между полями и char (0d) char (0a), заканчивающая строку (я думаю, это r n).

Это файл формата (4 -й Col - ширина COL):

9.0
5
1 SQLCHAR 0 12 "\t" 1 Record_ID ""
2 SQLCHAR 0 498 "\t" 2 Filename SQL Latin1 General CP1 CI AS
3 SQLCHAR 0 498 "\t" 3 Path SQL Latin1 General CP1 CI AS
4 SQLCHAR 0 12 "\t" 4 Width ""
5 SQLCHAR 0 12 "\r\n" 5 Height ""

Образец данных, начинающихся с верхней части файла:

Record_ID Filename Path Width Height
1437 BreadCakeCooknPie.eps G:\BakedGoods\BreadCakeCooknPie.eps 595 647
1438 CakeChocolateRoses.eps G:\BakedGoods\CakeChocolateRoses.eps 1200 848

Я импортирую его со следующим кодом T-SQL:

bulk insert item_table from 'Item_Table.txt' with
( FORMATFILE='Item_Table.fmt', FIRSTROW=2)

Поля таблиц:

[Record_ID] [int] NULL,
[Filename] [nvarchar](249) NULL,
[Path] [nvarchar](249) NOT NULL,
[Width] [int] NULL,
[Height] [int] NULL

Есть ли это записи? Есть идеи, как исправить ошибку? Есть идеи, как получить файл формата, созданный SSIS? Есть другие идеи?

Большое спасибо за рассмотрение моего вопроса.

Это было полезно?

Решение 3

Это частичный ответ. По -видимому, вы можете начать с BCP, создать файл формата и дамп текстовых данных, использовать файл формата из BCP и соответствовать экспорту текста точно в SSI. Устройство физического поля в файле данных (даже если вы можете заказать их в файле формата) и отсутствующие поля (даже если они вам не нужны), кажется, являются ключом.

Мне пришлось вручную сделать мета-дата для экспорта текста соответствовать файлу формата (рука напечатала метаданные в соответствии с столбцами в диспетчере подключения к текстовым файлам). Это вызвало физический порядок полей в текстовом файле соответствовать физическому порядку в таблице (я использовал столбец файла формата, чтобы соответствовать их раньше, что, похоже, не сработало).

Контент, экспортируемый из SSIS, все еще не тот, но достаточно близко, чтобы импортировать. Например, когда BCP экспортировал данные, он положил .000 поля даты и 0,0 за числовые поля (плавание и т. Д.).

Мой окончательный файл формата, который работал ниже. Обратите внимание на все поля SQLCHAR, хотя некоторые из них являются Unicode, что все размеры неверны (int 10, но у него 12), (текст имеет длину 249, но имеет 498), и (мне пришлось поместить все поля в , не только те, которые я хотел импортировать. Он не пропускал поля правильно.)

Безумный мир. Есть идеи, почему это было бы так?

9.0
29
1 SQLCHAR 0 12 "\t" 1 Record_ID ""
2 SQLCHAR 0 498 "\t" 2 Filename SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 498 "\t" 3 Path SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 498 "\t" 4 Extension_Win SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 498 "\t" 5 Short_Filename_Win SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 498 "\t" 6 Volume SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 24 "\t" 7 Created ""
8 SQLCHAR 0 24 "\t" 8 Last_Modified ""
9 SQLCHAR 0 24 "\t" 9 Cataloged ""
10 SQLCHAR 0 24 "\t" 10 Last_Updated ""
11 SQLCHAR 0 12 "\t" 11 File_Size ""
12 SQLCHAR 0 498 "\t" 12 Mac_File_Type SQL_Latin1_General_CP1_CI_AS
13 SQLCHAR 0 498 "\t" 13 Mac_Creator SQL_Latin1_General_CP1_CI_AS
14 SQLCHAR 0 498 "\t" 14 Mac_Zone SQL_Latin1_General_CP1_CI_AS
15 SQLCHAR 0 12 "\t" 15 Thumbnail_Size ""
16 SQLCHAR 0 12 "\t" 16 Color_Mode ""
17 SQLCHAR 0 30 "\t" 17 Horizontal_Resolution ""
18 SQLCHAR 0 30 "\t" 18 Vertical_Resolution ""
19 SQLCHAR 0 12 "\t" 19 Width ""
20 SQLCHAR 0 12 "\t" 20 Height ""
21 SQLCHAR 0 12 "\t" 21 MultipageCount ""
22 SQLCHAR 0 12 "\t" 22 PlaceHolder ""
23 SQLCHAR 0 12 "\t" 23 Watermarked ""
24 SQLCHAR 0 12 "\t" 24 FileStoreID ""
25 SQLCHAR 0 498 "\t" 25 Directory_Path SQL_Latin1_General_CP1_CI_AS
26 SQLCHAR 0 12 "\t" 26 RID ""
27 SQLCHAR 0 498 "\t" 27 Cataloged_By SQL_Latin1_General_CP1_CI_AS
28 SQLCHAR 0 498 "\t" 28 Updated_By SQL_Latin1_General_CP1_CI_AS
29 SQLCHAR 0 0 "\r\n" 29 File_Description SQL_Latin1_General_CP1_CI_AS

Другие советы

Неужели это сбой в исходной части потока данных? Можете ли вы опубликовать метаданные, относящиеся к источнику? Я иногда обнаружил с плоскими файлами SSIS неправильно оценивает размеры или типы данных на плоском файловом соединении. Когда это произойдет, задача по потоку данных не будет выполнена в исходной части импорта, как только она встречает данные, которые превышают длину, ожидаемое подключения к плоскому файлу в этом положении.

Неужели этот неудача в пункте назначения потока данных? Если так, работает ли это, по крайней мере, если вы используете читатель данных в качестве пункта назначения вместо фактической целевой таблицы? Я предполагаю, что ваша проблема ранее в стадии разработки, но если она проходит исходную часть потока данных, то вы можете, по крайней мере, изолировать проблему в качестве проблемы с пунктом назначения.

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

Считали ли вы запустить свой экспорт SSIS в формате трубы или запятой? Могут быть проблемы с тем, как персонаж TAB обрабатывается между экспортом и импортом.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top