gpt4 book ai didi

mysql - 将数据从 Excel 传输到 MySQL 服务器数据库?

转载 作者:行者123 更新时间:2023-11-29 00:55:26 26 4
gpt4 key购买 nike

我有一个相对复杂的 Excel 工作表,其中列从 A 开始到 BB 结束,行从 5 开始到 203 结束。

我想做的是告诉 MySQL 每列数据(带有我未在工作表中指定的标题)应该从第 5 行开始到第 203 行结束,并具体说明我想要传输的列。我该怎么做?

感谢您的帮助!

编辑:第 203 行下方有不相关的数据,我不想使用它。还有空白列,所以我需要避免这些。

最佳答案

首先,将您的 Excel 工作表保存为 CSV。

下一步。创建黑洞表将数据读入:

DROP TABLE IF EXISTS `test`.`import_excel`;
CREATE TABLE `test`.`import_excel` (
`A` int(10) unsigned NOT NULL,
`B` varchar(45) NOT NULL,
`C` varchar(45) NOT NULL,
`D` varchar(45) NOT NULL,
`E` varchar(45) NOT NULL,
.....
`BB` varchar(45) NOT NULL
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1;

创建一个只有一行的简单计数器表。

DROP TABLE IF EXISTS `test`.`counter`;
CREATE TABLE `test`.`counter` (
id int(10) unsigned NOT NULL PRIMARY KEY,
`count` int(10) unsigned NOT NULL,
`max_count` int(10) unsigned NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1;

REPLACE INTO counter VALUES (1,0,(203-5));

在黑洞表上创建触发器

DELIMITER $$

CREATE TRIGGER ai_import_excel_each AFTER INSERT ON import_excel FOR EACH ROW
BEGIN
DECLARE rows_left integer;

SELECT max_count - (`count` + 1) INTO rows_left FROM counter WHERE id = 1;
IF rows_left > 0 THEN BEGIN
//count the row_number you're in.
UPDATE counter SET `count` = `count` + 1 WHERE id = 1;

//Interpret the data and insert it into the proper tables.
//This is just an example
INSERT INTO real_table (a,b,c) VALUES (new.a, new.b, new.c);
INSERT INTO real_table2 (a,b,c) VALUES (NULLIF(new.d,''), new.e, new.c);
//You can change the data in anyway you like.
END; END IF;
END $$

DELIMITER ;

最后将第 5 行到第 203 行导入到 import_excel 表中。

LOAD DATA INFILE 'c:/excel.csv' INTO TABLE import_excel 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 4 LINES;

前 4 行将被 LOAD DATA INFILE 忽略,最后几行将被触发器删除。

关于mysql - 将数据从 Excel 传输到 MySQL 服务器数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6333845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com