Значення не вдалося перетворити через потенційну втрату даних [закрито]


12

Дозвольте розпочати, пояснивши, що це не дублікат питання , ані потенційний дублікат з цього питання. Я спробував реалізувати будь-яку відповідь на кожен окремий варіант, який вже існує в цій проблемі на StackOverflow та DBA Stack Exchange, без жодної удачі.

Я боровся з цією проблемою протягом останніх двох днів (працював над нею приблизно 7 годин на день), і навіть після того, як виникла проблема з Google, виявляється, що ніхто інший не має такого самого точного варіанту моєї проблеми.

Що я намагаюся зробити?

У SSIS я намагаюся прочитати з файлу CSV і вставити рядки з нього в базу даних OLE DB. З цього приводу я зробив найпростішу настройку, яку ми бачили нижче.

  1. Flat File Source - читає рядки CSV.
  2. Derived Column - наразі нічого не робить (це просто для експериментів).
  3. Data Conversion - наразі нічого не робить (це просто для експериментів).
  4. OLE DB Destination - зберігає рядки в базі даних.

Коли я намагаюся запустити його, він зупиняє виконання на моєму пункті OLE DB із наступним повідомленням про помилку.

Під час вводу "OLE DB Destination Input" (51) сталася помилка із стовпцем "Сума" (187). Повернувся статус стовпця: "Значення не вдалося перетворити через потенційну втрату даних."

Стовпчик, який не працює ( Amount), наразі має тип DT_STR. Схоже, це той тип, в який я зараз найбільше вірю.

Що я спробував?

  • Я спробував використовувати функцію Flat File Connection"Запропонувати типи" на стовпці, що не працює. Це змусило рекомендувати Single byte signed intтип даних.
    • Зупиняється на моєму рівному файлі .
    • Помилка - не вдалося перетворити дані. Перетворення даних для стовпця "Сума" повертає значення статусу 2 та текст стану "Значення не вдалося перетворити через потенційну втрату даних."
  • Я спробував використати, щоб Derived Columnпередати стовпець у a DT_I4.
    • Зупиняється на моєму похідному стовпчику .
    • Помилка - не вдалося перетворити дані. Перетворення даних для стовпця "Сума" повертає значення статусу 2 та текст стану "Значення не вдалося перетворити через потенційну втрату даних."
  • Я спробував використовувати, щоб Data Conversionпередати значення моєї колонки на a DT_I4.
    • Зупиняється на моїй Data Conversion.
    • Помилка - не вдалося перетворити дані. Перетворення даних для стовпця "Сума" повертає значення статусу 2 та текст стану "Значення не вдалося перетворити через потенційну втрату даних."
  • Я спробував змінити довжину свого DT_STRзначення в джерелі та в пункті призначення.
    • Зупиняється біля джерела чи пункту призначення залежно від налаштувань.
  • Я намагався підключитися за допомогою з'єднувача джерела Excel замість цього і без IMEX=1доданого до рядка з'єднання та без нього . Не вдалося.

Моє відчуття програмування говорить мені, що я накручений. Я ніколи не стикався з такою великою проблемою для такої простої речі.

І чому так я не можу просто ігнорувати "потенційну" втрату даних? Дійсно, найменше засмучуєш.

Моя система

Це машина Windows Server 2008 R2 із встановленим SQL Server 2008. Сама машина повністю оновлюється за допомогою Windows Update.


Здається, у мене була ця проблема зі значенням (хоча і витягуючи з Access), і мені довелося використовувати певну кодову сторінку, коли я передавав стовпець. У мене більше немає доступу до пакету SSIS, щоб перевірити, що я зробив.

Який тип даних стовпця, в який ви намагаєтеся вставити Amount?
Йон усіх торгів

2
Відкрийте диспетчер з’єднань з плоскими файлами для CSV Перейдіть на вкладку «Додатково» та виберіть Amountстовпчик. Зробіть знімок екрана та оновіть своє запитання щодо цього малюнка.
billinkc

Ви ще мали можливість подивитися диспетчера підключень?
billinkc

1
Я не вірю, що ви накручені, але, не бачачи визначення вашого менеджера підключень, сказати це неможливо.
billinkc

Відповіді:


3

Я кілька разів стикався з цим, і проблема полягала в невідповідності типів даних у параметрах експорту / імпорту. Перше, що потрібно зробити, це перевірити ці параметри, клацнувши правою кнопкою миші на джерело або пункт призначення, вибравши Розширений редактор. Перейдіть до Властивості вводу та виводу та перевірте тип даних цього стовпця для всіх елементів - і зовнішніх, і вихідних, і вхідних. Я зазвичай бачив тут дисперсію, часто один раз Unicode (WSTR), а інший I4 або DSTR.


8

Ігнорування помилки

Перш за все, ви повинні мати можливість ігнорувати обрізання рядків, перейшовши до вашого джерела плоских файлів, виведення помилок, а потім змінивши "Fail Component" у розділі "усікання" на "Ігнорувати помилку".

Краще рішення

Справжня проблема може полягати в тому, що довжина рядка всередині трубопроводу SSIS все ще не відповідає тому, що вона ініціалізувалася в якийсь попередній момент.

Ви можете визначити, чи це так, двічі клацнувши зелену стрілку з вашого джерела плоских файлів (або після конверсії отриманих стовпців / даних) та вибравши "Метадані". Там можна побачити довжину поля всередині трубопроводу.

Якщо ви часто бачили, що метадані вже не відповідають вихідному компоненту, головним чином, якщо створюється Плоский джерело файлу та його відповідне з'єднання за допомогою Майстра.

Моя пропозиція полягала б у тому, щоб видалити з'єднання та джерело Flat File та відтворити їх, оскільки я не знайшов способу повторно синхронізувати метадані конвеєра з компонентами джерела.


2
Це, однак, не підпадає під "усічення". Я вже спробував це.
Mathias Lykkegaard Lorenzen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.