【发布时间】:2020-10-08 23:48:19
【问题描述】:
我有一个已导入数据库的表。该表具有一系列用户友好的数据,因为它来自导出为 CSV 然后导入到表中的 Excel 模板。 在一个过于简单的例子中,我得到了以下内容:
MYDB.CSV
+----------+--------------------+------------------+-------------------------------------+
| language | item | title | description |
+----------+--------------------+------------------+-------------------------------------+
| Spanish | Grandioso Artículo | Gran Título | Este es un ejemplo en español. |
| English | Powerful Item | Power Title | This is an example in english. |
| French | Incroyable Article | Incroyable Titre | Ceci est un exemple en français. |
| English | Dull Item | Dull Title | This is another example in english. |
+----------+--------------------+------------------+-------------------------------------+
这些列的数据属于包含更多相关特征的不同表,例如:
MYDB.LANGUAGES
════╤════════════════════
id │ code description
────┼────────────────────
1 │ eng English
2 │ spa Spanish
3 │ fra French
════╧════════════════════
MYDB.ITEMS
════╤═══════════════════════════════
id │ code description
────┼───────────────────────────────
1 │ dull-789 Dull Item
2 │ incr-456 Incroyable Article
3 │ gran-123 Grandioso Artículo
4 │ powe-951 Powerful Item
════╧═══════════════════════════════
我怎样才能获得mydb.csv 列的相关数据,以便能够使用存储过程将其插入到另一个表中?我试图得到这样的东西:
MYDB.NICETABLE
id │ code description title
════╪═══════════════════════════════════════
1 │ spa gran-123 Gran Título
2 │ eng powe-951 Powerful Item
3 │ fra incr-456 Incroyable Titre
4 │ eng dull-789 Dull Title
我在存储过程中尝试了以下代码。必须按原样插入的数据,比如本例中的csv.title,我可以插入::
DELIMITER //
DROP PROCEDURE IF EXISTS addItems //
CREATE PROCEDURE addItems ()
BEGIN
START TRANSACTION;
/* INSERT INTO the corresponding tables */
INSERT INTO mydb.nicetable (title)
SELECT `title` FROM csv;
COMMIT;
END //
DELIMITER ;
CALL addBrand();
如何逐行比较数据(即csv.language)并获得我需要的数据(即languages.code)并将其插入另一个表(即nicetable.code)?
【问题讨论】:
-
"获取相关数据到 mydb.csv 列,以便能够使用存储过程将其插入另一个表" 虽然我们可以弄清楚您可能的意思,但这并不清楚。使用足够多的单词、句子和对部分示例的引用来清楚完整地表达你的意思。在给出业务关系(船舶)/关联或表(基础或查询结果)时,说明其中的一行根据其列值说明了业务情况。 minimal reproducible example
-
@philipxy 我明白,但是我很难正确地表达自己,所以我明白我没有选择最好的词。你能建议编辑吗?关于这个例子,我以最简单的形式给出了一个例子:我不需要用不必要的代码来大惊小怪。
-
我再次建议您尝试做我在第 1 条评论中建议的事情。你真的似乎没有真正试图澄清。现在我要留下我一直留下的另一条评论。
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)的 SQL,并以表格式作为代码输入。 How to Ask 暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你的期望和原因。
标签: mysql stored-procedures database-normalization database-cursor