2015-12-22 2 views
0

Я использую пакет SSIS с плоским диспетчером соединений с файлами, как описано ниже на рисунках, с форматом: разделитель и разделитель текста как «. Все столбцы разделены запятыми. у меня есть один столбец ItemDescription в моей таблице, которые держат данные, такие как Box Dimension 2" вместо Box Dimension 2 в. или Box Dimension 2 дюйма, например. Это приводит к созданию файла csv для создания другого столбца всякий раз, когда он попадает в этот piont в моем пакете. Любое предложение о том, как сделать эту работу без получения другого столбца?Настройка диспетчера текстовых команд с плоским файлом SSIS

enter image description here

[2]]

enter image description here

UPDATE, Вот исходные данные на текстовый файл в качестве вывода пример здесь SupplyID 929 с ItemDescription "Box ДВП 2"». также поставкиID 525 и 888

"SupplyID","ProtocolName","AssayName","ItemNumber","ItemDescription","PackagingUnits","SupplyCost","CatalogNumber","SetChildItemsToInclude","PrimaryStatus","SecondaryStatus" 
    "1531","XXXXXX","XXXXXX XXXXXX","XXXXXX-XXXXXX","XXXXXX XXXXXX: XXXXXX A (100% XXXXXX XXXXXX) and B (80% XXXXXX XXXXXX + 20% DMSO)","1","0","BD368632","","False","False" 
    "368","XXXXXX","XXXXXX XXXXXX","XXXX001","XXXXXX XXXXXX","250","0.16","STP-150","","False","False" 
    "369","XXXXXX","XXXXXX XXXXXX","XXXX002","XXXXXX XXXXXX","100","0.03","326895","","False","False" 
    "370","XXXXXX","XXXXXX XXXXXX","XXXX003","XXXXXXXXXXX, 20 G (Insyte)","50","3.39","BD 381433 ","","False","False" 
    "371","XXXXXX","XXXXXX XXXXXX","XXXX004","XXXXXXXXXXX, 22 G (Insyte)","50","3.39","BD 381423","","False","False" 
    "372","XXXXXX","XXXXXX XXXXXX","XXXX006","XXXX XXXX XXXXXXXXXXX (BD)","200","1.09","BD 364880","","False","False" 
    "929","XXXXXX","XXXXXX XXXXXX","XXXX007","Box Fiberboard 2"","1","5.41","","","True","False" 
    "525","XXXXXX","XXXXXX XXXXXX","XXXX126","Parafilm M XXXXXX, 2" x 250 feet (Ref# PM992), 1 XXXXXX Each","1","42.12","13-374-16","","False","False" 
    "888","XXXXXX","XXXXXX XXXXXX","XXXX152","XXXXXX XXXXXX, 21G w/12" XXXXXX, XXXXXX lock","50","1.65","","","False","False" 
+0

Я попробовал это на своей системе, и вывод в csv выглядит правильно. это «в тексте одна двойная кавычка или две одинарные кавычки?» –

+0

Спасибо @Bob Klimes Это двойные кавычки. – Loic

+0

Просто так мы ясно знаем, как выглядят исходные данные, можете ли вы открыть исходный файл в текстовом редакторе (блокнот работает) и скопируйте раздел, который является 'ItemNumber', на' PackagingUnits' – billinkc

ответ

0

Вариант № 1 Временное исправление преобразует файл в трубку «|» с разделителем.

Вариант № 2 Включите весь столбец с двойной запятой "part1, part2" запятой внутри значения столбца. В вашем случае «Box Dimention 2, boxkalai».

+0

Я пробовал вариант №1 уже без \t Исходные данные содержат один столбец ItemDescription в таблице, в котором хранятся данные, такие как Box Dimension 2 "вместо Box Dimension 2 in .. этот формат отображается в другой системе что я не могу изменить данные в нем. – Loic

0

Трудно точно сказать, в чем дело, не глядя на необработанные данные. На скриншоте снимаются самые важные персонажи (например, , и ").

Если бы вы могли предоставить часть необработанных данных, мы могли бы помочь вам лучше. (Например: некоторые поля могут также быть многострочным)

Однако у меня есть один столбец ItemDescription в моей таблице, содержать данные, такие как Box Dimension 2" вместо Box Dimension 2 в или Box Dimension 2 дюйма, например. . Это вызывает файл CSV сгенерированного создать еще один столбец, когда он ударил, что Пайонт в моем пакете.

Эти дополнительные колонки почти certanly там из-за дополнительной , в поле, не должным образом в окружении кавычек.

Некоторые общие правила:

  • Котировки необходимы только в том случае, если в поле есть разделитель. Если поле окружено кавычками, кавычки внутри этого поля должны быть экранированы с другой цитатой - например: "27"" monitor, black".

  • Если плоский файл действительно искажен, его никогда не следует принимать, потому что это вызовет больше проблем в долгосрочной перспективе. Единственное «правильное» решение в этом случае - «потребовать» поставщика данных для отправки хорошо сформированных данных.

Попытка «исправить» (импорт) деформированные flatfiles не только дать больше проблем в долгосрочной перспективе (особенно, когда есть регулярные обновления данных), но и сохранить все больше и больше, искаженные данные с плавающей вокруг вообще (если провайдеры mallformed знают, что это фиксируется, они, вероятно, не потрудились бы исправить это сами).

редактировать (глядя на необработанных данных в настоящее время)

Я имел взгляд на исходные данные, а на самом деле данные неверен:

,"Box Fiberboard 2"", должен быть ,"Box Fiberboard 2""",

и ,"Needles Butterfly, 21G w/12" tubing, luer lock", должны быть ,"Needles Butterfly, 21G w/12"" tubing, luer lock", например.

Итак, в идеале эти данные должны быть зафиксированы у источника.

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

Смежные вопросы