Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL插入错误-117:值的数目不等于列的数目_Python_Sql_Db2 - Fatal编程技术网

Python SQL插入错误-117:值的数目不等于列的数目

Python SQL插入错误-117:值的数目不等于列的数目,python,sql,db2,Python,Sql,Db2,我是SQL新手,我正在尝试不同的SQL查询。这一次我在插入语句时遇到困难。以下是我定义的表格: 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

我是SQL新手,我正在尝试不同的SQL查询。这一次我在插入语句时遇到困难。以下是我定义的表格:

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

这里有两个问题:

  • 为什么我在这里看到这个-117错误?我数了无数次——列数和参数数是一样的。一切都应该是好的,但事实并非如此

  • 如何设置
    B_DATE
    列?我决定以后再去约会,但我还是需要设法处理。根据我在互联网上找到的信息,日期存储为二进制列。我不知道如何对它进行编码并要求DB2服务器正确存储它。我只是需要一些想法,我自己应该能够理解细节

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


    谢谢

    我能够调试它

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

    我不确定,但这似乎是IPython的%SQL magic中的错误


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

    您说的是DB2,但添加了一个标记。您使用的是哪一个?我使用的是DB2,但是这个查询非常基本,所以sql server和DB2的查询应该类似。我没有发现任何错误@jarlh,如果我对sql server执行相同的语句,会得到相同的错误吗?我不知道我是否犯了基本的SQL错误,或者这是DB2的一些细微差别