Ошибка SQL: ORA-00913: слишком много значений

Две таблицы идентичны в терминах имени таблицы, имен столбцов, типа данных и размера. Эти таблицы расположены в отдельных базах данных, но я использую current Войти в hr user.

insert into abc.employees select * from employees where employee_id=100; 

Я не могу использовать оригинальный запрос из корпоративного офиса.

Error starting at line 1 in command:
insert into abc.employees select * from employees where employee_id=100; 

Error at Command Line:1 Column:25
Error report:
SQL Error: ORA-00913: too many values
00913. 00000 -  "too many values"
*Cause:    
*Action:

Ответ 1

Вы должны указать имена столбцов, как показано ниже. Это хорошая практика и, вероятно, решить вашу проблему.

insert into abc.employees (col1,col2) 
select col1,col2 from employees where employee_id=100; 

ИЗМЕНИТЬ

Как вы сказали, employees имеет 112 столбцов (sic!), попробуйте выполнить ниже, чтобы сравнить столбцы столбцов

select * 
from ALL_TAB_COLUMNS ATC1
left join ALL_TAB_COLUMNS ATC2 on ATC1.COLUMN_NAME = ATC1.COLUMN_NAME 
                               and  ATC1.owner = UPPER('2nd owner')
where ATC1.owner = UPPER('abc')
and ATC2.COLUMN_NAME is null
AND ATC1.TABLE_NAME = 'employees'

и вы должны обновить свои таблицы, чтобы иметь одинаковую структуру.

Ответ 2

Если у вас есть 112 столбцов в одной таблице, и вы хотите вставить данные из исходной таблицы, вы можете сделать это как

create table employees as select * from source_employees where employee_id=100;

Или из sqlplus выполните как

copy from source_schema/password insert employees using select * from 
source_employees where employee_id=100;

Ответ 3

Сообщение 00947 указывает на то, что в записи, которую вы пытаетесь отправить в Oracle, отсутствует один или несколько столбцов, которые были включены во время создания таблицы. Сообщение 00913 указывает, что запись, которую вы пытаетесь отправить в Oracle, содержит больше столбцов, чем было включено во время создания таблицы. Вам просто нужно проверить количество столбцов и их тип в обеих таблицах т.е. таблицы, которые участвуют в SQL.

Ответ 4

Для меня это прекрасно работает

insert into oehr.employees select * from employees where employee_id=99

Я не уверен, почему вы получаете ошибку. Характер кода ошибки, который вы создали, это столбцы, которые не совпадают.

Один хороший подход - использовать ответ @Parodo, указанный

Ответ 5

это немного поздно.. но я видел, что эта проблема возникает, когда вы хотите вставить или удалить одну строку из/в DB, ​​но u put/pull больше одной строки или более одного значения,

Например:

вы хотите удалить одну строку из БД с определенным значением, таким как идентификатор элемента, но вы запросили список идентификаторов, тогда вы столкнетесь с тем же сообщением об исключении.

С уважением.