SQL: Как правильно хранить данные из внешнего источника документов Excel? - PullRequest
1 голос
/ 09 января 2012

Я использую SQL Server 2008, я импортирую данные с помощью мастера импорта.

У меня есть данные из файла Excel, как показано ниже ...

SessionID       Email     SubmitTime      Question1     Question2    Question3 
----------      -----     -----------     ---------     ---------    ----------
54535212        a@b.com   12/21/2011      Yes           No           Yes
54532342        c@d.com   12/22/2011      Yes           Yes          Yes
54535288        e@f.com   12/23/2011      No            No           Yes
54532399        g@h.com   12/24/2011      No            Yes          Yes

Теперь я хочу сохранить его в своей базе данных, чтобы я мог легко получить доступ к данным. Я думаю, что я должен сделать Users Table, Questions Table, Answers Table, Submitted Table. Для моих целей представленная таблица может стать столбцом для пользовательской таблицы.

User
`Email`
`Submitted`
`SessionID`

Question
`Question1`
`Question2`
`Question3`

Answer
`Email`
`Question`
`Answer`

Как заполнить таблицу ответов запросом из документа Excel? Или исходная таблица, созданная из документа Excel при импорте? Это кажется легкой проблемой, но решение почему-то ускользает от меня. Спасибо за любую помощь!

1 Ответ

1 голос
/ 09 января 2012

Ваша структура данных немного испорчена.Если у вас есть три столбца от Question1 до Question3, то вы хотите, чтобы столбец SurveyID или что-то в этом роде идентифицировало уникальные комбинации.Тогда ваша таблица ответов будет иметь столбцы UserID, SurveyID, Answer1, Answer2 и Answer3.

Если ваша таблица Question имеет один столбец Question и QuestionID столбец (возможно, столбец identity, так что он автоматически увеличивается, тогда вы должны сделать что-то вроде этого, чтобы заполнить таблицу Answer из таблицы Import:

insert into answer (userid, questionid, answer)
select
    u.userid,
    q.questionid,
    case
        when q.question = 'Question1' then i.question1
        when q.question = 'Question2' then i.question2
        when q.question = 'Question3' then i.question3
        else null
    end as answer
from
    import i
    inner join users u on
        i.email = u.email
    cross join question q
...