这是我目前的情况:
- 我有包含 X 列的 CSV 文件。
- 我有包含 Y 列的空 SQL 数据库。
问题:
- CSV 文件可能包含 SQL 数据库没有的列。
- SQL 数据库可能包含 CSV 文件没有的列/变量。
- CSV 文件将具有与 SQL 数据库匹配的 Z 列;只能通过第 1 行(标题)来识别。它们无法通过顺序来识别。
- 无法使用像 HeidiSQL 这样的 GUI。需要命令行解决方案。
我想将 CSV 文件上传到空数据库中;将 CSV 文件中缺少的所有变量留空。一个人如何去做并做到这一点呢?我的尝试导致 MYSQL 假设列的排序方式与数据库相同。
最佳答案
在一定程度上您可以使用 MySQL LOAD DATA INFILE
句法。完全配置的示例可能如下所示(跳过一行,插入表的 col1
和 col3
中):
load data local infile '/path/to/your.csv'
into table `yourdb`.`yourtable`
fields escaped by '\\' terminated by '\t'
lines terminated by '\n'
ignore 1 lines
(`col1`, `col3`);
如果表格中有不需要的 csv 数据...可以在表格中为它们添加一些列,然后删除这些列,或者首先从 csv 中删除它们。
如果事情比这更棘手,您几乎肯定必须使用您选择的编程语言进行编码。
关于MySQL 使用匹配的 header 加载数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28550561/