нужно архитектурное предложение - PullRequest
0 голосов
/ 12 мая 2011

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

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

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

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

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

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

Спасибо

Как насчет импорта как XML, а затем делать и XSLT?

Ответы [ 4 ]

1 голос
/ 12 мая 2011

Это может быть достигнуто в несколько шагов:

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

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

0 голосов
/ 12 мая 2011

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

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

псевдокод:

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

String results[][] = getDBResults()  
for( i=0;i&ltnumCOls;i++ ) {  
    line = fieldName[i] + ",";  
      for(j=0; j<&ltnumRows; j++) {  
          line += results[j][i] + ",";  
      }
      FILE.writeline(line[:-1]);  
}
0 голосов
/ 12 мая 2011

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

MyField         FieldNameNeeded
UnitSerial      Unit Serial
Address1        Address Line 1
0 голосов
/ 12 мая 2011

Использование PIVOT.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...