首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL插入错误-117:值数不等于列数

SQL插入错误-117:值数不等于列数
EN

Stack Overflow用户
提问于 2020-03-18 21:05:46
回答 1查看 1.3K关注 0票数 0

我对SQL很陌生,我正在尝试使用不同的SQL查询。这一次,我很难插入到声明中。下面是我定义的表:

代码语言:javascript
复制
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语句:

代码语言:javascript
复制
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,但我仍然需要以某种方式处理它。从我在互联网上找到的信息中,日期被存储为二进制列。我不知道如何对它进行编码,并要求DB2服务器正确存储它。我只是需要一些想法,我应该能够自己理解细节。

不知道这是否重要,但我正在使用来自木星笔记本的Python3.x使用DB2。我从示例CSV文件读取的数据。我可以使用内置的CSV读取器从DB2控制台填充表,但不能从木星笔记本中填充表。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-03-18 22:32:24

我能调试它!

对于控制台中的简单SQL,所有请求都是正确的,因为简单SQL控制台在某种程度上忽略换行符。据我所见,可以使用良好的格式规则创建格式化的SQL查询。对于IPython来说,%SQL魔术不是这种情况。如果它看到换行符,它认为这是查询的结束,并尝试将其发送到服务器。因此,服务器会抱怨缺少值并产生错误。当我从INSERT查询中删除所有换行符时,语句就会被传递,而不会出现任何错误。

我不确定,但对于IPython来说,这似乎是%SQL魔术中的错误。

感谢大家对这个问题的投入和关注。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60747475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档