繁体   English   中英

尝试使用过程从另一个表中填充表的数据,错误代码:1136。列数与第 1 行的值计数不匹配不断弹出

[英]Trying to fill data of table from another table using a procedure, Error Code: 1136. Column count doesn't match value count at row 1 keeps popping up

CREATE TABLE temp_t (
shipper_id integer,
shipper_name varchar(100),
shipper_contact_details varchar(30), 
product_id integer,
vehicle_maker varchar(100),
vehicle_model varchar(100),
vehicle_color varchar(100),
vehicle_model_year integer,
vehicle_price decimal(7,2),
quantity integer,
    discount decimal (2,2),
customer_id varchar(30),
customer_name varchar(100),
gender varchar(100),
job_title varchar(100),
phone_number varchar(100),
email_address varchar(100),
city varchar(100),
country varchar(100),
state varchar(100),
customer_address varchar(100),
order_date varchar(100),
order_id integer,
ship_date varchar(100),
ship_mode varchar(100),
shipping varchar (100),
postal_code integer,
credit_card_type varchar (100),
credit_card_number varchar(100),
customer_feedback varchar(100),
quarter_number integer,
PRIMARY KEY (order_id)                    
);     

create table vehicles_t (
vehicle_maker varchar(20),
vehicle_model varchar(20),
vehicle_color varchar(15),
vehicle_model_year integer,
vehicle_price decimal(7,2),
quantity integer,
    quarter_number integer,
    PRIMARY KEY (vehicle_maker)
    );   

创建我的两个表来填充

DROP PROCEDURE IF EXISTS vehicles_p;

-- Syntax to create a stored procedure-
DELIMITER $$ 
CREATE PROCEDURE vehicles_p()
BEGIN
       INSERT INTO vehicles_t(
vehicle_maker,
vehicle_model,
vehicle_color,
vehicle_model_year,
vehicle_price,
quantity,
    quarter_number            
) SELECT * FROM temp_t;
END;

创建一个过程,以便我可以使用 temp_t 表作为基础自动填充其他表。

TRUNCATE temp_t;

LOAD DATA LOCAL INFILE "/Users/***/Downloads/new_wheels_sales_qtr_1.csv" -- change this location to load another week
INTO TABLE temp_t
FIELDS TERMINATED by ','
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n'
IGNORE 1 LINES;'

调用车辆_p();

用来自 csv 的值填充 temp_t 表,以便该过程可以工作,然后我调用该过程。 这是发生错误的地方。

错误代码:1136。列计数与第 1 行的值计数不匹配

您有 sql 代码,它创建一个带有一组特定字段的表 temp_t。

您创建(但不执行)一个过程。

然后运行将 CSV 填充到 temp_t 中的 sql 代码(可能带有匹配字段列表)。

然后,您运行预期从 temp_t 表中获取字段并将它们填充到(以前未提及和未描述的)vehicles_t 表中的过程。

系统抱怨(此时)您的字段计数错误,无法运行 INSERT INTO sql 代码。

这是因为您在插入命令中提取“*”(包括 temp_t 中的所有字段),而不是必须与 INSERT INTO sql 代码中的字段匹配的字段列表。

我不能说它会在那个时候成功,因为我还没有看到vehicles_t的结构。 但如果这些字段匹配(字段计数和数据类型),你应该很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM