требуется архитектурное предложение

#c# #sql-server #database-design

#c# #sql-сервер #база данных-дизайн

Вопрос:

Вот чего я пытаюсь достичь.

У меня есть база данных SQL Server с 16 таблицами.

Теперь мне нужно сгенерировать плоский файл следующим образом.

 Field1, value1,value2, ..., valueN
Field2, value1,value2, ..., valueN
Field3, value1,value2, ..., valueN
.
.
.
FieldN, value1,value2, ..., valueN
  

Где поля похожи на имена столбцов в нескольких таблицах. Однако это не то же самое имя. Существует соотношение 1 к 1 между именами полей и столбцов.

Как мне это сделать?

Спасибо

Как насчет импорта в формате XML, а затем выполнения и XSLT?

Комментарии:

1. Я думаю, вам нужно определить, что вы подразумеваете под «похожим». И если вы скажете нам, почему вы пытаетесь этого добиться, возможно, будет легче получить ответ. Это для заполнения таблиц тестовыми данными? Это для перемещения данных из одного макета таблицы в другой?

2. @MJB Под «подобным» я подразумеваю, что существует соотношение 1 к 1 между Field и ColumnName. например, столбец UnitSerial должен быть полем «Unit Serial» в плоском файле. И нет, это не всегда разница в пространстве между ними. Просто нет согласованности.

3. @MJB Я пытаюсь интегрировать две системы, и этот плоский файл — это то, что принимает вторая система.

4. Теперь у меня есть несколько вариантов. Какой подход наилучший? Большое спасибо.

5. Я бы предпочел импортировать данные КАК ЕСТЬ в новую систему, а затем преобразовать их с помощью SQL. Это дало бы вам некоторую свободу действий с точки зрения декодирования, поиска и т.д., А также транзакций.

Ответ №1:

Этого можно достичь за несколько шагов:

  1. Загрузите данные из базы данных вместе с именами столбцов.
  2. Преобразуйте имена столбцов во что-то приемлемое.
  3. Преобразуйте все данные в правильный формат.
  4. Сгенерируйте файл.

Все это так же универсально, как и ваш вопрос. Если вы задали конкретный вопрос, то, возможно, мы сможем дать вам конкретный ответ.

Комментарии:

1. Как насчет импорта в формате XML, а затем выполнения и XSLT?

Ответ №2:

Здесь это очень общий подход, но вы могли бы загрузить результирующий набор для вывода таблицы в 2d-массив, а затем просмотреть массив в порядке следования столбцов для вывода файла.

Вы также могли бы создать массив, который сопоставляет позиции столбцов или имена с именами полей.

псевдокод:

 fieldName[] = {"Field1","field2",....}

String results[][] = getDBResults()  
for( i=0;iamp;ltnumCOls;i   ) {  
    line = fieldName[i]   ",";  
      for(j=0; j<amp;ltnumRows; j  ) {  
          line  = results[j][i]   ",";  
      }
      FILE.writeline(line[:-1]);  
}
  

Комментарии:

1. Как насчет импорта в формате XML, а затем выполнения и XSLT?

Ответ №3:

Используйте PIVOT .

Я написал сообщение в блоге об использовании PIVOT. Вам не нужно будет выполнять тот же тип агрегирования, что и я, но это должно помочь вам начать.

Комментарии:

1. Как насчет импорта в формате XML, а затем выполнения и XSLT?

Ответ №4:

Чтобы получить желаемые имена полей, вам может понадобиться промежуточная таблица сопоставления, которую вы заполняете вручную:

 MyField         FieldNameNeeded
UnitSerial      Unit Serial
Address1        Address Line 1
  

Комментарии:

1. Как насчет импорта в формате XML, а затем выполнения и XSLT?