SQL INSERT ERROR -117: количество значений не равно количеству столбцов - PullRequest
0 голосов
/ 19 марта 2020

Я новичок в SQL и пытаюсь поэкспериментировать с различными SQL запросами. На этот раз у меня возникли трудности с заявлением INSERT INTO. Вот таблица, которую я определил:

CREATE TABLE EMPLOYEES 
(
    EMP_ID CHAR(9) NOT NULL, 
    F_NAME VARCHAR(15) NOT NULL,
    L_NAME VARCHAR(15) NOT NULL,
    SSN CHAR(9),
    B_DATE DATE,
    SEX CHAR,
    ADDRESS VARCHAR(30),
    JOB_ID CHAR(9),
    SALARY DECIMAL(10,2),
    MANAGER_ID CHAR(9),
    DEP_ID CHAR(9) NOT NULL,
    PRIMARY KEY (EMP_ID)
);

Это пусто. Сейчас я пытаюсь заполнить таблицу некоторыми данными и застрял с ошибкой -117. Я уверен, что я делаю здесь какую-то глупую ошибку, но, несмотря на весь мой опыт в разных областях, я там не вижу. Вот инструкция INSERT INTO, которую я пытаюсь выполнить:

INSERT INTO EMPLOYEES (EMP_ID, F_NAME, L_NAME, SSN, SEX, ADDRESS, JOB_ID, SALARY, MANAGER_ID, DEP_ID)
VALUES ('E1001', 'John', 'Thomas', '123456', 'M', '5631 Rice, OakPark,IL', '100', 100000, '30001', '2'),
       ('E1002', 'Alice', 'James', '123457', 'F', '980 Berry ln, Elgin,IL', '200', 80000, '30002', '5'),
       ('E1003', 'Steve', 'Wells', '123458', 'M', '291 Springs, Gary,IL', '300', 50000, '30002', '5'),
       ('E1004', 'Santosh', 'Kumar', '123459', 'M', '511 Aurora Av, Aurora,IL', '400', 60000, '30004', '5'),
       ('E1005', 'Ahmed', 'Hussain', '123410', 'M', '216 Oak Tree, Geneva,IL', '500', 70000, '30001', '2'),
       ('E1006', 'Nancy', 'Allen', '123411', 'F', '111 Green Pl, Elgin,IL', '600', 90000, '30001', '2'),
       ('E1007', 'Mary', 'Thomas', '123412', 'F', '100 Rose Pl, Gary,IL', '650', 65000, '30003', '7'),
       ('E1008', 'Bharath', 'Gupta', '123413', 'M', '145 Berry Ln, Naperville,IL', '660', 65000, '30003', '7'),
       ('E1009', 'Andrea', 'Jones', '123414', 'F', '120 Fall Creek, Gary,IL', '234', 70000, '30003', '7'),
       ('E1010', 'Ann', 'Jacob', '123415', 'F', '111 Britany Springs,Elgin,IL', '220', 70000, '30004', '5');

и сервер DB2 возвращает следующую ошибку:

SQL0117N Количество назначенных значений не совпадает с числом указанных или подразумеваемых столбцов или переменных. SQLSTATE = 42802 SQLCODE = -117

Два вопроса здесь:

  1. Почему я вижу эту ошибку -117 здесь? Я посчитал бесконечные времена - количество столбцов и аргументов одинаковы. Все должно быть хорошо, но это не так.

  2. Как установить B_DATE столбец? Я решил оставить B_DATE на потом, но мне все равно нужно как-то с этим бороться. Из информации, которую я нашел в Inte rnet, DATE хранится в виде двоичного столбца. Я понятия не имею, как его закодировать и попросить сервер DB2 правильно его хранить. Мне просто нужна идея, я должен уметь разбираться в деталях.

Не знаю, важно ли это, но я работаю с DB2, используя Python 3.x из Блокнот Юпитера. Данные, которые я прочитал из примера файла CSV. Я могу заполнить таблицу из консоли DB2, используя встроенный CSV-ридер, но не из Jupiter Notebook.

Спасибо

1 Ответ

0 голосов
/ 19 марта 2020

Я смог отладить его!

Для простого простого SQL в консоли все запросы верны, поскольку простая простая консоль SQL в некоторой степени игнорирует переводы строки. Насколько я вижу, можно создавать отформатированные запросы SQL, используя хорошие правила форматирования. Это не так для% SQL волхвов c для I Python. Если он видит перевод строки, он считает, что это конец запроса, и пытается отправить его на сервер. В результате сервер жалуется на пропущенные значения и выдает ошибку. Как только я удалил все новые строки из запроса INSERT INTO, я получил инструкцию, переданную без каких-либо ошибок.

Я не уверен, но, похоже, ошибка в% SQL magi c для I Python.

Спасибо всем за вклад и внимание к этой проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...