Импорт данных из Excel в SQL Server, что не позволяет импортировать все данные
У меня странная вещь, связанная с импортом данных из Excel в SQL Server с помощью инструмента "Импорт и экспорт данных".
Короче говоря, я могу видеть данные в Excel, но все данные не импортируются.
У меня есть книга Excel, содержащая одну таблицу. Я вижу данные в столбцах, и все выглядит хорошо. Когда я использую мастер импорта для импорта данных, я могу видеть столбцы и данные предварительного просмотра, но данные не все передаются при импорте. Ошибок нет, и процесс импорта завершается - он просто вставляет в таблицу пустые значения.
Кажется, что это происходит чаще всего с числами - так что скажем, у меня есть три столбца для имени, фамилии и идентификационного номера. Я получаю все имена и фамилии, а также некоторые идентификационные номера. Я не могу найти образец того, что происходит.
У меня это случалось раньше, и я заметил, что во время процесса импорта были выбраны две таблицы: DataImport и DataImport $- и первый из них потерпит неудачу, как описано выше, а второй будет импортироваться безупречно. На этот раз можно выбрать только одну таблицу.
В основном я использую документ XLS и 32-разрядный мастер импорта в 64-битной системе, но Im готов попробовать что-нибудь.
Любые идеи о том, почему есть две таблицы (иногда) и почему этот импорт не удался?
Dave
Ответы
Ответ 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