Импортировать данные таблицы Excel в СУЩЕСТВУЮЩУЮ таблицу sql?
У меня есть таблица с именем tblAccounts, содержимое которой будет получено из электронной таблицы Excel.
Я использую MS SQL Server 2008 (x64) на Windows 8.1 (x64)
Я пытался использовать мастер импорта/экспорта SQL Server, но нет возможности выбрать существующую таблицу, а есть только вариант создания новой.
Я пытался использовать другие методы, такие как OPENROWSETS
INSERT INTO tblAccount SELECT * FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0',
'Excel 12.0;Database=D:\exceloutp.xls','SELECT * FROM [Sheet1$]')
но дал мне ошибку:
Сообщение 7308, уровень 16, состояние 1, строка 1 Поставщик OLE DB "Microsoft.Jet.OLEDB.4.0" нельзя использовать для распределенных запросов, поскольку поставщик настроен для работы в однопоточном режиме квартиры.
Некоторые исследования показали, что это произошло из-за 64-битного экземпляра SQL-сервера.
Проблема заключается в том, что этот перенос данных Excel в таблицу SQL должен выполняться только с помощью мастера импорта/экспорта SQL.
Как я могу импортировать электронную таблицу Excel в существующую таблицу SQL, не создавая новую?
Некоторые ссылки, которые я посетил, но не смогли помочь мне решить мою проблему:
Ответы
Ответ 1
Saudate, я столкнулся с этим, ища другую проблему. Вы, безусловно, можете использовать мастер импорта Sql Server для импорта данных в новую таблицу. Конечно, вы не хотите оставлять эту таблицу в базе данных, поэтому я предлагаю вам импортировать в новую таблицу, а затем script данные в менеджере запросов для вставки в существующую таблицу. Вы можете добавить строку, чтобы удалить временную таблицу, созданную мастером импорта, в качестве последнего шага после успешного завершения script.
Я считаю, что исходная проблема на самом деле связана с Sql Server 64 bit и связана с тем, что у вас 32-битный Excel, и эти драйверы плохо сочетаются. Я столкнулся с очень похожими проблемами, когда сначала использовал 64-битное преимущество.
Ответ 2
Вы можете скопировать и вставить данные из таблицы Excel в таблицу SQL следующим образом:
- Выберите данные в Excel и нажмите Ctrl + C
- В SQL Server Management Studio щелкните правой кнопкой мыши таблицу и выберите "Редактировать первые 200 строк".
- Прокрутите вниз и выберите всю пустую строку, нажав на заголовок строки
- Вставьте данные, нажав Ctrl + V
Примечание. Часто таблицы имеют первый столбец, который представляет собой столбец идентификаторов с автоматически сгенерированным/увеличенным идентификатором. Когда вы вставите свои данные, он начнет вставлять самый левый выбранный столбец в Excel в самый левый столбец в SSMS, таким образом вставляя данные в ID-столбец. Чтобы избежать этого, оставьте пустой столбец в самой левой части вашего выбора, чтобы пропустить этот столбец в SSMS. Это приведет к тому, что SSMS вставит данные по умолчанию, которые являются автоматически сгенерированным идентификатором.
Кроме того, вы можете пропустить другие столбцы, располагая пустые столбцы в тех же порядковых позициях в списке листов Excel, что и пропущенные столбцы. Это заставит SSMS вставлять значение по умолчанию (или NULL, если значение по умолчанию не указано).
Ответ 3
Вы можете использовать данные импорта с помощью мастера, и там вы можете выбрать таблицу назначения.
Запустите мастер. При выборе исходных таблиц и представлений вы видите две части. Источник и назначение.
Щелкните поле в разделе "Место назначения", чтобы открыть раскрывающийся список и выбрать таблицу назначения и, если необходимо, отредактировать ее сопоставления.
Ответ 4
Если вы хотите, чтобы программный инструмент сделал это, вы можете посмотреть это пошаговое руководство:
"Как проверить и импортировать электронную таблицу Excel в базу данных SQL Server"
http://leansoftware.net/forum/en-us/help/excel-database-tasks/worked-examples/how-to-import-excel-spreadsheet-to-sql-server-data.aspx