MySQL 使用匹配的 header 加载数据文件

标签 mysql csv import data-import

这是我目前的情况:

  • 我有包含 X 列的 CSV 文件。
  • 我有包含 Y 列的空 SQL 数据库。

问题:

  • CSV 文件可能包含 SQL 数据库没有的列。
  • SQL 数据库可能包含 CSV 文件没有的列/变量。
  • CSV 文件将具有与 SQL 数据库匹配的 Z 列;只能通过第 1 行(标题)来识别。它们无法通过顺序来识别。
  • 无法使用像 HeidiSQL 这样的 GUI。需要命令行解决方案。

我想将 CSV 文件上传到空数据库中;将 CSV 文件中缺少的所有变量留空。一个人如何去做并做到这一点呢?我的尝试导致 MYSQL 假设列的排序方式与数据库相同。

最佳答案

在一定程度上您可以使用 MySQL LOAD DATA INFILE句法。完全配置的示例可能如下所示(跳过一行,插入表的 col1col3 中):

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/

相关文章:

python - 同时读取文件

php - 通过 PHP 为 utf-8 字符导出 CSV

objective-c - 在 objective-c 中组织#import 的工具

MySQL 如何获取每组的前 N ​​行

python - 如何使用python格式化表中的列数据?

php - prestashop 1.5 导出零售最终价

javascript - Vue路由器动态组件

javascript - JS 在文件之间导入数组

MySQL:比较日期字符串?

php - 知道哪一列有结果