【问题标题】:MySQL - LOAD DATA LOCAL INFILE - Problems if DB tablename has hyphenMySQL - LOAD DATA LOCAL INFILE - 如果数据库表名有连字符会出现问题
【发布时间】:2017-01-26 23:54:36
【问题描述】:

我在 php 中使用脚本将 csv 导入到数据库表中

$sqlQueryImport = "LOAD DATA LOCAL INFILE '".$fileNewDataImportInDB."' INTO TABLE " .$sqlTableName
        . " CHARACTER SET UTF8"
        . " FIELDS TERMINATED BY ';'"
        . " ENCLOSED BY '\"'"               
        . " LINES TERMINATED BY '\n'";

我总是得到错误:

您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 'tbl-test' 附近的字符集 UTF8 字段由 ';' 终止封闭式 BY '"' LINES T' 在第 1 行"

为了测试它,我直接在 phpmyadmin 中将 csv 导入到 DB 表中,它可以工作。

然后我将数据库表名“tbl-test”更改为“tbl_test”并且没有错误。

数据库表名中不能使用“-”吗?还是我必须为它写一个特殊的代码?

【问题讨论】:

    标签: php mysql csv


    【解决方案1】:

    您可以尝试使用反引号转义表名。所以你的LOAD DATA 声明看起来像这样:

    LOAD DATA LOCAL INFILE someFile.csv INTO TABLE `tbl-test`
    CHARACTER SET UTF8
    FIELDS TERMINATED BY ';'
    ENCLOSED BY '\"'
    LINES TERMINATED BY '\n'
    

    完整代码:

    $sqlQueryImport = "LOAD DATA LOCAL INFILE '".$fileNewDataImportInDB."' INTO TABLE `" .$sqlTableName
            . "` CHARACTER SET UTF8"
            . " FIELDS TERMINATED BY ';'"
            . " ENCLOSED BY '\"'"               
            . " LINES TERMINATED BY '\n'";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2012-06-01
      • 2014-02-18
      • 2020-07-25
      • 2013-01-24
      • 1970-01-01
      相关资源
      最近更新 更多