MySQL/MariaDB LOAD DATA INFOILE with CSV without an id colum



我创建了一个具有以下定义的表:

CREATE TABLE vacayhome.photo (
id INT NOT NULL AUTO_INCREMENT,
url_path CHAR NOT NULL,
caption CHAR NOT NULL,
space_type CHAR NOT NULL,
is_main BOOLEAN NOT NULL,
listing_id INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (listing_id) REFERENCES listing (id)
ON UPDATE RESTRICT
);

我试图插入到这个表中的数据有以下形式:

url_path,caption,space_type,is_main,listing_id
JFK/015ec48e93480.jpg,An interior designer dream,,true,10000000
JFK/9184bd57e9f80.jpg,"Ready for you, YASS",,false,10000000
BCN/5ccd9b138c76.jpg,"Stay -- you're welcome",,false,10000001
BCN/5fbb3a5ac2b30.jpg,Warm sunlight throughout,,false,10000001

这是我在MariaDB和MySQL文档中的空表中的LOAD DATA语句:

ALTER TABLE photo DISABLE KEYS;
BEGIN;
LOAD DATA INFILE '/path/to/photos.csv' INTO TABLE photo
FIELDS
OPTIONALLY ENCLOSED BY '"'
TERMINATED BY ','
LINES
TERMINATED BY 'n'
IGNORE 1 ROWS (url_path,caption,space_type,is_main,listing_id);
SET id=NULL;
COMMIT;
ALTER TABLE photo ENABLE KEYS;

OPTIONALLY ENCLOSED BY用于文本中有逗号的CHAR列,IGNORE 1 ROWS用于忽略标题行。

当我尝试加载数据时,我得到以下错误:

ERROR 1193 (HY000) at line 33: Unknown system variable 'id'

我还尝试过从其他StackOverflow帖子中的答案中添加SET id=NULL,比如这篇。我做错了什么?

SET ID=NULL;指令之前有一个额外的分号。以下代码在我的本地MySQL环境中成功运行:

ALTER TABLE photo DISABLE KEYS;
BEGIN;
LOAD DATA LOCAL INFILE '/path/to/photos.csv' INTO TABLE photo
FIELDS
OPTIONALLY ENCLOSED BY '"'
TERMINATED BY ','
LINES
TERMINATED BY 'n'
IGNORE 1 ROWS (url_path,caption,space_type,is_main,listing_id)
SET id=NULL;
COMMIT;
ALTER TABLE photo ENABLE KEYS;

您可能还需要检查列类型(例如,使用VARCHAR(。祝你好运

你试过把路径放在引号里吗?

如下所示。。。

url_path,caption,space_type,is_main,listing_id
"JFK/9184bd57e9f80.jpg","Ready for you, YASS",,false,10000000

最新更新