Новичок пытается вставить данные в SQL Server 2008 от excel

Я пробовал последние несколько дней, и то, что я делаю, – это поиск в Интернете и поиск кода, который я могу найти и проверить. Я сдаюсь и надеюсь, что блестящие умы здесь могут мне помочь.

Я пытаюсь загрузить данные с листа excel в уже существующую таблицу в SQL Server. Все столбцы и атрибуты данных точно совпадают.

Когда я запускаю скрипт, он дает ошибку:

Ошибка времени выполнения '-2147217865 (80040e37)':
Механизм базы данных Microsoft Access не смог найти объект «DATA_FOR_CUTTING». Убедитесь, что объект существует, и что вы правильно назовете его имя и путь. Если «DATA_FOR_CUTTING» не является локальным объектом, проверьте сетевое подключение или обратитесь к администратору сервера

Это сценарий (я использую Excel 2010)

Sub Excel_To_SQL() Dim con As ADODB.Connection Dim con2 As New ADODB.Connection Dim s As String Dim s2 As String Dim s3 As String Dim WSP1 As Worksheet Set con = New ADODB.Connection Application.DisplayStatusBar = True Application.StatusBar = "Contacting SQL Server..." s = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\xxx\Documents\xxx\xxxx\Book2.xlsx';" _ & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=0;Readonly=False"";" ' 'HDR = yes - to exclude header of excel file upon reading con.Open s s2 = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=xxx;Password=xxx;Initial Catalog=xxx;Data Source=xxxxx;" con2.Open s2 s3 = "INSERT INTO dbo.DATA_FOR_CUTTING SELECT * FROM [Data_for_Cutting$]" con.Execute s3 con.Close Set con = Nothing Application.StatusBar = "Data successfully loaded." End Sub 

#

Я исправил строку подключения, и ошибок больше нет, но она ничего не делает. Он не читает содержимое рабочего листа, поэтому никакие строки не вставляются в таблицу sql. Но если я делаю команду «INSERT INTO … VALUES (XXX)», значения VALUES вставляются в таблицу SQL, поэтому соединение и команда работают. Кто-нибудь знает, почему он не читает листок? Благодарю.

Лично, когда я делаю такие вещи, я копирую существующие заголовки столбцов в отдельный лист из SQL Server.

Затем я копирую каждый столбец данных под соответствующими заголовками.

Затем из параметра «Изменить верхние 200 строк» ​​после щелчка правой кнопкой мыши по таблице, я вставляю данные из excel.

Как насчет возможности использования Excel для создания строк для генерации SQL? Например, предположим, что у меня есть эти ячейки:

 AB
 Имя Телефон
 Андрей 555-555-4444
 Алекс 555-555-3333

Тогда в ячейке C2 я мог бы ввести

="insert into mytable(name, phone) values('"&A2&"','"&B2"');"

И чтобы иметь дело с 10 000 таких строк, конечно, просто скопируйте формулу.

С другой стороны, чтобы сделать это программно, у вас уже есть код для подключения к SQL Server, поэтому вам нужно всего лишь конвертировать диапазон в Excel в SQL. Скажем, например, мы предполагаем, что наш диапазон всегда будет иметь имена полей SQL как первую строку, как показано выше, тогда этот макрос может просто сделать трюк:

 ' Convert a named range to SQL insert statements. First row must have SQL field names. Public Function RangeToSQL( _ strExcelRangeName As String, _ strSQLTableName As String, _ Optional strSheetName As String = "Sheet1" _ ) As String Dim rng As Range Dim sh As Worksheet Set sh = ThisWorkbook.Worksheets(strSheetName) Set rng = sh.Range(strExcelRangeName) Dim i As Long, j As Long, vt As Variant, strFields As String, strValues As String For j = 1 To rng.Columns.Count strFields = strFields + IIf(j = 1, "", ",") strFields = strFields + rng.Cells(1, j).Value Next j For i = 2 To rng.Rows.Count strValues = strValues + IIf(i = 2, "", "," + vbCrLf) For j = 1 To rng.Columns.Count strValues = strValues + IIf(j = 1, "(", ",") vt = rng.Cells(i, j).Value strValues = strValues + IIf(IsNumeric(vt), CStr(vt), "'" + CStr(vt) + "'") Next j strValues = strValues + ")" Next i RangeToSQL = "insert into " + strSQLTableName + "(" + strFields + ") values " + strValues + ";" End Function 

Для ячеек, показанных выше, определенных в именованный диапазон, это генерирует следующий SQL:

 insert into whatevertable(Name,Phone) values ('Andrei','555-555-4444'), ('Alex','555-555-3333'); 

Выяснилось, что версия SQL, которую я использую, была более старой версией, и она не работает с 2007 (или более новой), поэтому мне нужно использовать версию 2003 года.

  • Как я могу получить значения, разделенные запятыми, из файла Excel в отдельные строки, которые, в свою очередь, будут вставлены в базу данных?
  • Импорт и экспорт данных из SQL Server в Excel
  • tsql экспортировать и приложить отчет SSRS по электронной почте?
  • используя ssis 2008 для чтения ячейки файла с фиксированным форматом excel
  • Экспорт из GridView в Excel не отображается персидский
  • SSIS Excel в CSV - 64 бит True
  • Как динамически создавать рабочие листы с помощью XSLT?
  • Создание таблицы temp в SQL Server 2008 с использованием макроса Excel (ADODB)
  • Отправлять файл excel из базы данных в excel без записи файла
  • Не удалось просмотреть исходные данные SSIS Excel после пропусков первых нескольких строк
  • Импортируйте Excel-лист на SQL Server, пропустите нарушения первичного ключа
  • Давайте будем гением компьютера.