2015-01-09 8 views
0

У меня возникло несколько проблем с импортом плоского файла в MS SQL Server с использованием мастера импорта/экспорта SQL Server. Я хотел бы знать, как эффективно загружать файл в таблицу SQL Server.Импорт плоского файла в SQL Server Повторные заголовки Ограничения целостности прерываний

Условия файла:

  1. Плоский файл является довольно большой (800MB и Serveral миллиона строк)
  2. Это плохо отформатированные
    1. Первый столбец пуст
    2. Заголовок представляет собой 3 ряд строк: верхний пробел, средний имеет названия полей, нижний пробел
    3. Этот заголовок 3-го ряда повторяется примерно каждые 60 000 строк
    4. Некоторые значения обнуляет
    5. Это табуляцией

Во-первых, я попытался загрузить его как плоский файл, но SQL сервер не смог распознать разделителями. Excel открывает его правильно (хотя частично), но SQL Server все это делает в 1 столбце.

Во-вторых, я попытался открыть и сохранить его как файл excel и загрузить его в качестве файла excel в мастер импорта SQL Server (который я не уверен, что он все равно сохраняет все данные). Теперь SQL Server корректно анализирует столбцы, но он говорит, что целостность объектов прерывается при попадании на повторяющиеся заголовки (каждое числовое поле имеет заголовок строки каждые 60000 строк).

Если кто-нибудь может сказать мне, как обойти это, было бы здорово. В идеале я хотел бы загрузить его без ограничений целостности и удалить дополнительные заголовки с заголовком DELETE WHERE или пустым. Не единственное решение, которое я возьму, но идея.

Кроме того, это мой первый пост stackoverflow, поэтому терпение ценится.

Спасибо,

+1

Импортируйте свои данные в промежуточную таблицу со всеми столбцами, которые могут быть напечатаны, возможно, (varchar (4000)), все очищают там, удаляют, обновляют строки, как только все данные чисты, выполните некоторые тесты, попытайтесь найти любые данные, которые является грязным/неправильным/поврежденным, как только он прошел все этапы, а затем финналы вставьте его в конечную таблицу назначения. Говоря по опыту «Никогда не вставляйте данные непосредственно в свои таблицы», особенно данные, поступающие в формате flat files/xml/(no sql). –

ответ

0

Поскольку у меня нет официального ответа пока я выложу то, что я в конечном итоге делает.

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

Я не знаю, что это когда-нибудь поможет кому-то, но, по крайней мере, здесь есть ответ.