【问题标题】:Import CSV separated by semicolons and delimited by quotes导入用分号分隔并用引号分隔的 CSV
【发布时间】:2020-08-31 21:09:44
【问题描述】:

我需要您的帮助来解决将 .cv 本地文件导入MariaDB 10.3 数据库的问题。在我的服务器上,我正在运行 PHP7.2。

要导入,请使用带有以下语句的 PHP 脚本:

exec("mysql -u Myuser -pMySrtongPassword -e \"USE MyDatabase;
TRUNCATE MyTable;
LOAD DATA LOCAL INFILE '/var/www/html/upload/file.csv' IGNORE  INTO TABLE MyTable FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' IGNORE 1 LINES ;\"; ");

这适用于我需要导入的大多数.csv 文件。但是,我有一些 .csv 文件格式如下:

"field1"; "field2"; ..... "fieldN";

它们用分号分隔并用引号分隔。

有人对如何正确导入这些文件有任何想法吗?

【问题讨论】:

    标签: php mysql csv


    【解决方案1】:

    在“加载数据”中添加OPTIONALLY ENCLOSED BY '\"'

    TRUNCATE MyTable;
    LOAD DATA LOCAL INFILE '/var/www/html/upload/file.csv' IGNORE  INTO TABLE MyTable FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES ;
    

    【讨论】:

    • 谢谢,我只是添加“OPTIONALLY ENCLOSED BY '\”' 并在 MySQL CLI 中正常工作,但在 PHP 脚本中我收到以下错误:第 1 行的错误 1064 (42000):你有一个SQL 语法错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的 ''LINES TERMINATED BY' 附近使用正确的语法 sh:-c:第 4 行:在寻找匹配的 `'' 时意外 EOF sh:-c:第 7 行:语法错误:文件意外结束我认为问题在于在 php exec 命令中连接 '\"' 的方式。有什么想法吗?
    • 问题是你必须为 shell com 和 mysql 转义它,所以你应该尝试 '\\\"'
    • 就是这样。你拯救了我的一天!谢谢
    猜你喜欢
    • 2010-10-17
    • 2019-09-26
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 2019-08-19
    • 1970-01-01
    • 2019-09-19
    相关资源
    最近更新 更多