mysql - 加载数据 MySQL

标签 mysql mysqldump

我在将 csv 数据加载到 mysql 表时遇到问题。

我有这样的数据:

Identity : name=Tomas, age=28, hoby=traveling;
Identity : name=Justin, age=29, hoby=Fhising;

我想要这样的结果

|field1|field2|  field3 |
|tomas |  28  |traveling|
|justin|  29  | fhising |

最佳答案

使用直接 LOAD DATA INFILE with set expression

LOAD DATA INFILE 'FILENAME.CSV'
    INTO TABLE TABLENAME
    (@f1, @f2, @f3)
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY ';'
    SET `field1` = SUBSTRING(@f1, LOCATE('name=', @f1)+5), `field2` = SUBSTRING(@f2, LOCATE('age=', @f2)+4), `field3` = SUBSTRING(@f3, LOCATE('hoby=', @f3)+5)

注意我还没有测试过它。所以可能会有错误。请根据您的需要进行调整。

使用awk作为预处理器

使用 awk 预处理您的 csv 文件并调用 LOAD DATA INFILE

awk -F[,=\;] '{print $2","$4","$6}' < FILENAME.CSV > PROPER.CSV

现在在mysql中,

LOAD DATA INFILE 'PROPER.CSV'
        INTO TABLE TABLENAME
        FIELDS TERMINATED BY ','
        LINES TERMINATED BY '\n'

关于mysql - 加载数据 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13637402/

相关文章:

bash - 压缩通过 SSH 连接到另一台机器的 Mysqldump

bash - 在 bash 脚本中捕获 mysqldump 错误

mysql - 提高大型数据库上 mySQL 查询的速度

mysql - 如何通过连接表从多个表中获取所有列

php - 忽略 PDO 主机

c# - 向数据库提交数据时不显示消息框

mysql - 导出的 blob 数据不同于数据库数据

mysql - WordPress 数据库错误 The table is full for query UPDATE

mysql - 使用mysql将一个数据库复制并覆盖到另一个数据库

amazon-web-services - 如何将本地 MySQL 数据库导入 RDS 数据库实例?