2012-02-19 2 views
2

Я пытаюсь вставить данные в таблицу db с листа MS Excel 2007 с помощью функции импорта. Задача здесь в том, что моя таблица db имеет первичный ключ auto_incremented. Это в основном означает, что на листе excel по практическим соображениям не может существовать столбец, который будет действовать как данные первичного ключа, поскольку это потребовало бы, чтобы редакторы вручную сохраняли ввод данных [таблица excel для таблицы может быть добавлена ​​несколько поэтому сохранение вклада последнего номера в столбце первичного ключа не является отличной идеей].Импорт из листа Excel в таблицу базы данных

В этом заключается проблема. Функция импорта отказывается вставлять информацию в конкретную таблицу, а создает новую таблицу в базе данных и вводит туда информацию. Чтобы противостоять этому, вторая стратегия заключалась бы в том, чтобы иметь триггер или хранимую процедуру, которая выполняет периодическую [меня не интересует семантика того, когда/как это будет выполняться]: INSERT INTO requiredDbColumn SELECT *
ОТ excelSheetTable

Однако, это не будет работать, поскольку excelSheetTable и requiredDbColumn имеют несоответствие значений/столбцов, поскольку excelSheetTable имеет только число столбцов (n-1), которые были созданы из листа excel, который был загружен с требуемым значениемDbColumn, который имеет n количество столбцов, дополнительный столбец - столбец первичного ключа.

Я установил первичный ключ для автоматического увеличения, поэтому я не уверен, почему INSERT INTO, SELECT указывает несоответствие счетчика столбцов/значений.

Это общая проблема, у кого-нибудь есть решение для этого?

Спасибо!

ответ

0

Когда я делаю INSERT, я обычно даю «значения» всем полям для вновь вставленной строки. Моя вставка автоматически также автоматически увеличивает первичное ключевое поле.

Вот отрывок из одного из моих команд INSERT:

INSERT INTO Security.Memberships VALUES (185790, '1461459','asdf',NULL,NULL,1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL) 

Возможно, вам нужно более полно сконструированный команду INSERT?

+0

Спасибо Джерри, но это вставка, в которой значения указаны с помощью Select * from other_table command – user1020069

Смежные вопросы