gpt4 book ai didi

mysql - 将 mysqlimport 与文件列的子集一起使用

转载 作者:行者123 更新时间:2023-12-03 09:55:54 25 4
gpt4 key购买 nike

我有一个文件,例如 data.csv ,它正在进入我的服务器,我想将其导入到 data MySQL 数据库中的表使用 mysqlimport .

我的问题是,该文件的数据比我实际想要导入的数据多得多。它被我之前的另一台服务器使用,该服务器需要所有这些数据,但我只需要其中的少数列。

有没有办法指定我想要的列 mysqlimport使用?

我认为它看起来像

mysqlimport --columns="field_1","field_2","field_42","field_31","field_16","field_4" db data.csv

但该表只包含文件的前 6 个字段。如果需要,我可以重新排列表格,以便我想要的字段按顺序排列(即,我将运行 --columns="field_1","field_2","field_4","field_16",... )。

我隐约意识到这可以使用 sed 来完成,但我很好奇是否 mysqlimport原生支持吗?

编辑:接受的答案并不完全是我所希望的,但我认为答案是,“不,遗憾的是它不支持它”。无论如何,请查看已接受的答案和评论以获取解决方法!

最佳答案

--columns 选项不会命名输入文件的列。它命名您要导入的目标表的列。输入文件的所有字段都需要放在某个地方。 --columns 中的列数需要与输入文件的字段数一样多。

但并非输入文件的所有字段都需要放入表的列中。

嗯?

这里有一个技巧(这也适用于LOAD DATA INFILE):您可以将输入字段“发送”到表的实际列或 session 变量。该变量将被文件中的每一行输入覆盖,但这并不重要。将其视为代码项目中的虚拟变量。

示例:我创建了一个包含三列的表格。

mysql> create table mytable (one text, two text, four text);

我创建了一个包含四个字段的输入文本文件。

$ cat mytable.csv
one,two,three,four

在这里,我将字段导入到各自的列中,通过将其放入虚拟变量来跳过字段三。

$ mysqlimport --local --columns one,two,@dummy,four --fields-terminated-by=, test mytable.csv 

成功!

mysql> select * from mytable;
+------+------+------+
| one | two | four |
+------+------+------+
| one | two | four |
+------+------+------+

关于mysql - 将 mysqlimport 与文件列的子集一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63398841/

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