Удалить речевые метки из файла, в котором квалификатор текста имеет значение "

Введение

У нас есть довольно стандартный способ импорта .txt и .csv в наше хранилище данных с помощью SSIS.

Наши файлы txt/csv создаются с речевыми метками в качестве квалификаторов текста. Таким образом, типичный файл может выглядеть следующим образом:

"0001","025",1,"01/01/19","28/12/18",4,"ST","SMITH,JOHN","15/01/19"
"0002","807",1,"01/01/19","29/12/18",3,"ST","JONES,JOY","06/02/19"
"0003","160",1,"01/01/19","29/12/18",3,"ST","LEWIS,HANNAH","18/01/19"

Мы настроили все наши пакеты SSIS для удаления речевых меток, установив Text Qualifier = "

Проблема

Однако, поскольку некоторые из наших данных вводятся вручную, иногда используются речевые метки, особенно в полях произвольного текста, таких как ИМЯ, где у людей есть псевдонимы/псевдонимы. Это вызывает ошибки при загрузке SSIS.

Пример проблемной строки:

"0004","645",1,"01/01/19","29/12/18",3,"ST","MOORE,STANLEY "STAN"","12/04/19"

Мой вопрос

Есть ли способ как-то убрать эти проблемные речевые метки? то есть речевые метки, окружающие «СТАН», так что этот столбец будет рассматриваться как МУР, СТЭНЛИ СТАН.

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

Решение должно быть масштабируемым, поскольку у нас есть сотни пакетов SSIS, в которых может возникнуть эта проблема.


person glass_kites    schedule 12.11.2019    source источник
comment
Если ваш процесс приводит к MOORE, STANLEY STAN, просто используйте производный столбец и replace([columnName],,)   -  person KeithL    schedule 12.11.2019


Ответы (1)


У меня есть несколько предложений:

  1. Я знаю, что в Excel есть параметр, который говорит что-то вроде «Обрабатывать последовательные разделители как один».
  2. Измените свой разделитель на что-то другое, например, на трубу (вещь над обратной косой чертой, не знаю, как она называется в другом месте, выглядит как вертикальная линия). Вы можете отличить разделители от кавычек, которые должны быть включены в результирующее значение, потому что любой разделитель строк либо непосредственно предшествует запятой, либо сразу же следует за ней. Символ кавычки в любом другом месте не является разделителем.
  3. Если вам не нужно передавать данные через какой-либо T-SQL, вы можете заменить кавычки без разделителей одинарными кавычками или, в зависимости от окончательного вывода, вместо этого, возможно, объект html ("). Надеюсь это поможет,

Джоуи

person Joey Morgan    schedule 13.12.2019