gpt4 book ai didi

mysql - 将 CSV 移动到 MySQL 关系数据库的第一步。 CSV 结构!= MySQL 结构

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

我有一个采用以下格式的 CSV:

Module, Topic, Sub-topic

它需要能够导入到具有以下格式的 MySQL 数据库中:

CREATE TABLE `modules` (
`id` varchar(4) NOT NULL,
`name` varchar(20) NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `topics` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`module` varchar(30) NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `module_ref_idx` (`module`),
CONSTRAINT `module` FOREIGN KEY (`module`) REFERENCES `modules` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=648 DEFAULT CHARSET=latin1;

CREATE TABLE `subtopics` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`topic` int(3) NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `topic_idx` (`topic`),
CONSTRAINT `topic` FOREIGN KEY (`topic`) REFERENCES `topics` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=latin1;

我知道我能够将 CSV 文件中的数据插入 MySQL 并保持数据完整性,但我不确定如何操作。 CSV 中的数据需要放入每个表的“名称”字段中,同时保持数据关系完整。

我现在正在 Workbench 中玩,但无法正确操作。

提前致谢。

最佳答案

创建一个表来加载 csv(也可以使用临时表)

CREATE TABLE `tmp_subtopics` (
`module` VARCHAR(50) NULL,
`topic` VARCHAR(50) NULL,
`subtopic` VARCHAR(50) NULL
)

加载 csv(您可能需要额外的编码、字段名称等选项)

 LOAD DATA INFILE 'file.csv' INTO TABLE tmp_subtopics

插入模块

 INSERT IGNORE INTO modules (name)
SELECT DISTINCT module FROM tmp_subtopics

插入主题

INSERT IGNORE INTO topics (name,module)
SELECT DISTINCT
tmp.topic,
m.id
FROM tmp_subtopics tmp
JOIN modules m ON m.name = tmp.module

插入子主题

INSERT INTO subtopics (name,topic)
SELECT
tmp.subtopic,
t.id
FROM tmp_subtopics tmp
JOIN topics t ON t.name = tmp.topic

另外:

UNIQUE KEY id (id) 是多余的,您应该将其删除。

topics 表中的 module 字段应该是 INT 而不是 VARCHAR

关于mysql - 将 CSV 移动到 MySQL 关系数据库的第一步。 CSV 结构!= MySQL 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476242/

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