Мастер импорта SQL Server не поддерживает импорт из таблицы Excel с более чем 255 столбцами - PullRequest
3 голосов
/ 08 июля 2019

Я использую мастер импорта и экспорта SQL Server 2019, чтобы импортировать лист Excel (файл xlsx) в качестве источника, и я задаю место назначения в виде таблицы SQL Server.

enter image description here

enter image description here

В настройках мастера я настроил сопоставление всех столбцов в Excel с таблицей SQL Server. После мастера импорта я не вижу ошибок, отображаемых на экране, но обнаруживаю, что не все сопоставленные столбцы заполнены в таблице SQL Server. Глядя на столбцы, которые не импортированы, я вижу, что они находятся в конце столбцов файла Excel (слева направо), и все они имеют нулевые значения в БД, несмотря на наличие значений в файле Excel и правильное сопоставление в мастере.

Файл Excel содержит 280 столбцов, которые я сопоставляю в мастере и импортирую

Я попытался выбрать SQL Server 2016 в качестве источника, но результат тот же.

В качестве обходного пути я разделил файл Excel на два отдельных файла Excel, удаляя половину столбцов с листа за раз, чтобы уменьшить количество столбцов. Затем мне нужно выполнить 2 импорта в две отдельные промежуточные таблицы шагов импорта и затем соединить их с помощью SQL-запросов в основную таблицу.

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

Есть ли какие-либо настройки или обходные пути, чтобы обойти это ограничение?

1 Ответ

1 голос
/ 09 июля 2019

Типы данных Excel

Прежде всего, я не уверен, что вы были правы, когда упомянули, что:

Приятной особенностью столбцов Excel является то, что он знает, какой тип данных при импорте, чтобы мастер не получал эти странные ошибки при импорте из файла CSV для файла с разделителями табуляции.

Поскольку Excel не является ядром базы данных, и один столбец может содержать разные типы данных, что вызовет несколько проблем при чтении данных, особенно при использовании поставщиков OLE DB (используется в SSIS)

255 столбцов ограничение

Кроме того, ограничение в 255 столбцов не относится к Microsoft Excel, но оно связано с поставщиками OLE DB (JET или ACE) даже при использовании с другими источниками (Access, Flat Files ...)

Обходные

  1. Конвертируйте файл Excel в файл .csv и импортируйте его с помощью диспетчера соединений с плоскими файлами, который не зависит от поставщика OLE DB

  2. Импорт данных в 2 этапа с определенным диапазоном, затем присоединение к таблицам результатов:

Вы можете импортировать первый 255 столбец в таблицу, используя следующую команду SQL в качестве источника:

SELECT * FROM [Sheet1$A:IT]

Затем импортируйте оставшиеся столбцы в другую таблицу, а затем объедините обе таблицы в одну таблицу назначения, используя SQL.

Вы можете обратиться к следующей статье, чтобы получить некоторые идеи:

...