Подтвердить что ты не робот

Импорт данных из Excel в SQL Server, что не позволяет импортировать все данные

У меня странная вещь, связанная с импортом данных из Excel в SQL Server с помощью инструмента "Импорт и экспорт данных".

Короче говоря, я могу видеть данные в Excel, но все данные не импортируются.

У меня есть книга Excel, содержащая одну таблицу. Я вижу данные в столбцах, и все выглядит хорошо. Когда я использую мастер импорта для импорта данных, я могу видеть столбцы и данные предварительного просмотра, но данные не все передаются при импорте. Ошибок нет, и процесс импорта завершается - он просто вставляет в таблицу пустые значения.

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

У меня это случалось раньше, и я заметил, что во время процесса импорта были выбраны две таблицы: DataImport и DataImport $- и первый из них потерпит неудачу, как описано выше, а второй будет импортироваться безупречно. На этот раз можно выбрать только одну таблицу.

В основном я использую документ XLS и 32-разрядный мастер импорта в 64-битной системе, но Im готов попробовать что-нибудь.

Любые идеи о том, почему есть две таблицы (иногда) и почему этот импорт не удался?

Dave

4b9b3361

Ответ 1

Ответ на ваш вопрос может включать данные HOW, которые хранятся в Excel.

Я столкнулся с одной и той же проблемой. У меня был столбец, содержащий два типа значений: числовые и числовые с тире. (например, 51000 и 2009-00949) Мне нужно было импортировать их как в NVARCHAR, так и в VARCHAR, но мастер импорта SQL (SQL2005) импортировал только цифры, а не числа с тире или числами с тире, а не числами, в зависимости от того, какой тип был в первой записи. Значения, которые не были импортированы, имеют значение "null" в этом поле, что делает мои записи бесполезными.

Я попытался использовать параметр меню "Формат | Ячейки" в Excel (числовой, текстовый, общий и т.д.) и различные варианты сопоставления в SQL (nvar, nvarchar, varchar, sqlvariant, float) без успеха.

Решением было использовать параметр "Данные | Текст в столбцы" в Excel, а не параметр форматирования ячейки для хранения числового значения в виде текста. Когда я использовал это в столбце, числовые значения (например, 51000) преобразуются в числа, сохраненные в виде текстового значения (в верхнем левом углу появляется небольшая ошибка треугольника), цифры с тире остались в виде текста. Мне пришлось оставить данные в этом формате с небольшой зеленой ошибкой треугольника, иначе он не смог бы успешно импортировать SQL. Когда данные в столбце были сохранены в этом формате, два типа данных столбца (числовые и числовые с тире) импортированы правильно с другими данными записи, а в столбце нет нулевых значений.

Ответ 2

Моя проблема заключалась в том, что файл, который я импортировал, был более старым и несколько злокачественным файлом excel. Я открыл файл и сохранил его как .xlsx, и файл был успешно импортирован без нулевых данных.

Ответ 3

Мне удалось решить проблему, отсортировав данные, чтобы текстовые данные были сверху. Таким образом, SQL Server знал, что это текстовые данные, а не числовые данные.

Ответ 4

Вы используете мастер импорта, нет? Нажмите Edit Mappings на странице "Выбор исходных таблиц и просмотров" мастера и проверьте столбцы "Тип", "Невозможность" и "Размер" для каждого столбца источника. Похоже, что что-то не получается правильно.

Ответ 5

Скорее всего, предположительно пустая строка, в результате чего сервер Sql игнорирует остальную часть данных. Бу, конечно, вы могли бы поделиться схемой файла excel и первых пяти строк? Правильные три и следующие две записи.

Ответ 6

Выберите все строки этого столбца и измените тип на текст в excel, затем выберите весь столбец и измените тип на текст. Будет определенно работать.

Ответ 7

У меня также есть проблема. Единственный способ, которым я смог его решить, - сохранить файлы .xlsx как .csv файлы, а затем использовать CSV файлы в SQL Server "Импорт данных".

Казалось бы, интеграция между Microsoft Excel и Microsoft SQL Server будет более чистой.

Мои версии: Excel 2013. SQL Server 2012.

Ответ 8

Я столкнулся с такой же проблемой. Используя .xlsx, я решил проблему.

Ответ 9

Наконец, форматирование ячеек для генерала работало для меня там, где есть числовое значение, раньше оно показывало% s, но теперь оно решено.

Ответ 10

Похоже, что инструмент импорта из SSMS берет образец первых строк "x", чтобы определить тип данных столбца и другие его характеристики, поэтому, если он выбирает значение double, текстовые значения будут равны нулю, и если он читает это как текст без номера покажет. Если у вас есть Microsoft Access, вы можете сначала использовать импорт доступа, который позволяет вам выбирать свои собственные типы столбцов и сохранять его как файл доступа, а затем импортировать доступ к SQL-серверу и "вуаля", это работает (по крайней мере, для меня), Надеюсь, это кому-нибудь поможет.

Ответ 11

У меня была похожая проблема. Многие записи не были импортированы из Excel в SQL Server. Я сохранил файл Excel как файл .csv и импортировал его как плоский файл. Все записи были сохранены, проблема решена! Спасибо @DaveBenz