SSIS зберігає силу, змінюючи початкову рядок excel, щоб плавати


9

У Excel є стовпець, який повинен бути текстом, але SSIS бачить там числовий текст і автоматично змушує його плавати подвійною точністю [DT_R8].

Я можу змінити його вручну у стовпцях Зовнішній та вихідний відділення Виводу, але Вихід помилки просто відмовляється дозволити мені змінити відповідний стовпець.

Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".

Я спробував змінити пакет xml. Я спробував IMEX=1і , typeguessrow=0але нічого з цього не зафіксував мою проблему. Чи має це взагалі якесь виправлення? Також є статті, які пропонують змінити свій реєстр так, що excel читає більше, ніж 8 рядків за замовчуванням, перш ніж вгадувати тип даних. Я не хочу йти цим маршрутом, тому що навіть якби він працював, мені доведеться змінити реєстр на машині, на якій я планую запустити пакет.

Поле excel, яке потрібно імпортувати в поле nvarchar SQL, читає, наприклад

295.3
296.33

але вони записуються в таблицю SQL як

295.30000000000001
296.32999999999998

Я розміщую в оглядачах даних і поля показують

295.3
296.33

весь шлях через виконання, яке є правильним, але я думаю, коли він потрапляє у джерело призначення OLE DB, він якимось чином перетворює його на

295.30000000000001
296.32999999999998

що неправильно.

У мене також є такі значення, як, наприклад, V321.1 і V213.34, які, безумовно, не є цілими числами, і їх потрібно зберігати як варчар.


Коментарі не для розширеного обговорення; ця розмова була переміщена до чату .
Пол Білий 9

Відповіді:


2

Чи можливо отримати файл у форматі .csv, який можна імпортувати як текстовий файл і не матиме цієї проблеми? Я, як правило, відбиваю всі файли Excel і прошу іншого формату, оскільки SSIS і Excel не грають добре на багатьох рівнях.


1
Я скачу, що найближчим часом буде змінено файл .csv або txt. зробить речі набагато простішими.
Хуан Велес

2

Здається, немає можливості виправити цю проблему. Excel розглядає перші кілька рядків даних у стовпці і завжди змушує тип даних FLOAT незалежно від того. Мені було запропоновано створити шаблон із кількома символами вархара в перших кількох рядках (8+), тож EXCEL вибере це як тип даних, а потім імпортує мої дані. Що допомагає, адже я використовую Source Safe, я можу "зареєструватися" у файлі, щоб він мій пакунок створив "Тільки для читання", щоб Visual Studio не міг змінювати мої попередньо визначені типи даних.


1

Крок 1: Додайте IMEX=1; MAXROWSTOSCAN=0в рядок з'єднань (наприклад Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0").

Крок 2: Закрийте рішення. Відкрийте пакунок SSIS в текстовому редакторі, знайдіть стовпці, які повертаються до попередньо визначеного типу даних. Оновіть його вручну в XML-файлі до потрібного формату.

Крок 3: Відкрийте пакунок у інструменті даних SQL Server та виконайте виконання, тепер ви повинні мати можливість завантажувати дані як із файлу.


Вибачте, але тип вихідних даних відсутній у пакеті. Лише типи стовпців призначення. Це знову перемагає мету, оскільки конверсія все ще відбувається в сторону драйвера Microsoft.Ace (або залежно від того, який драйвер обрано), а втрата даних вже сталася до моменту потрапляння в SSIS та таблицю призначення.
Інженер з
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.