Борьба за прием элементов данных из больших текстовых файлов в формате отчета - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть серия из 9 текстовых файлов (разделенных по размеру файла, примерно 1,3 миллиона строк на файл).

Формат файлов одинаков для каждого уровня записи, но существенно различается по всей записи. Я с трудом нахожу способ проглотить. Цель состоит в том, чтобы в конечном итоге преобразовать данные / карту в SQL таблицы. Запись также может быть разделена между двумя файлами, если она начинается в одном файле и заканчивается в следующем.

Каждая запись начинается с символа подачи формы. Большая часть файла имеет фиксированную ширину, а не только данные, содержит имя поля (заголовок) и значение с несколькими полями в строке. В большинстве полей нет пробелов, но в некоторых есть пробелы, поэтому для меня это еще один ключ. Пример нескольких строк этого формата (данные обфусцированы):

  FYEADAB-2            300  AAAAAAAAAA        873.82  PEBD-PMB-CBG              1-BAXYX-CKDE              PUYME-UB-CD               
  UECD-BK       1111111111  CYBY-BAX             .00  P-CKUBBY                  1-BAXE-UABE               BYAAYBG-DAYX              
  UECYD,AY-FAG        A     BAZ-PUEM          285.08  P-CYBY                    1-YU-CBG-PD               BK-KF-UBYBX            1  
  YBV,CAB         PV1  001  MYP-PMY              .00  P-BAZ                     1-PY-CBG-PD               P-PAAB-CKDE               
  CAB-UECD-BK   5555555555  AYEB                 .00  P-MYP-PMY                 1YU-CBG-DABE              DYXC-CKAA-CA         .00  
  BYPE-AKAB             13  KV-XB-XPUEAD         .00  P-AYEB                    1-BEW-YUABE               ACCU-XBKP-DA              

Поле UECD-BK является идентификатором записи, и его необходимо будет применить до следующего нажатия на символ «Подача формы». Мы также получаем случайный двойной возврат каретки / перевод строки, который меняет профиль на что-то более похожее на это:

  BUIIUXG                                 BUIIUXG-XCYE    CYUX GUICYCIU             BGUBEGUY     8908      GGEY HCWK BU             
  CDDGEQQ 8908 GGEY HCWK BU               CU-YUGG                                   CDDGEQQ      UGICXDU               FI  32836    
  CXD ZUB UGICXDU FI           FI 32836   IFY-XCYE  GUICYCIU#CYUX#                  CU-IFY-XCYE                                     
  CBB UD                                                                            GEQ UD                                          
  BGUB CDG VID CUDE         BGUB VID DCUE             BGUB VID UD               UGG CD                                              

Любые умные способы go насчет захвата только элементов данных и присвоения их их заголовок поля?

...