#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. Как насчет импорта в формате 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?