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


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;'

调用vehicles_p ();

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

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

sql代码创建了一个包含特定字段集的表temp_t。

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

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

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

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

这是因为你正在拉"*"(其中包括temp_t中的所有字段),而不是必须与insert INTO sql代码中的字段匹配的字段列表。

我不能说它会在那一点上成功,因为我没有看到vehicles_t的结构。但是,如果这些字段匹配(字段数和数据类型),应该就可以了。

相关内容