【问题标题】:You have an error in your SQL syntax: MariaDB server + codeigniter + LOAD DATA INFILE您的 SQL 语法有错误:MariaDB server + codeigniter + LOAD DATA INFILE
【发布时间】:2016-10-24 09:34:52
【问题描述】:

我正在使用 codeigniter。试图将 csv 文件加载到数据库中。 $path = 'C:/xampp/htdocs/CodeIgniter-3.0.6/';

错误:

A Database Error Occurred

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Institution ID Code,Acquiring Institution Name,Service Indicator,Local Point of ' at line 5

LOAD DATA INFILE "C:/xampp/htdocs/CodeIgniter-3.0.6/fichier/test3.csv" INTO TABLE atm_location FIELDS TERMINATED BY ";" LINES TERMINATED BY "\n" IGNORE 0 LINES (Acquiring Institution ID Code,Acquiring Institution Name,Service Indicator,Local Point of Service ID,Country Code,Administrative Region, Tourist Area,City / Town / Locality,Postal Code,Address,Location Name,Type of Location,Type of Access,Opening Hours,Opening Days,Card Programm Indicator,Opening Date,GPS Latitude,GPS Longitude)

Filename: C:/xampp/htdocs/CodeIgniter-3.0.6/system/database/DB_driver.php

Line Number: 691

这行得通:

$query = $this->db->query('LOAD DATA INFILE "'.$path.'fichier/test3.csv" INTO TABLE atm_location FIELDS TERMINATED BY ";"');

这不起作用(给出上面的错误):

$query = $this->db->query('
        LOAD DATA INFILE "'.$path.'fichier/test3.csv" 
        INTO TABLE atm_location FIELDS TERMINATED BY ";" 
        LINES TERMINATED BY "\n" 
        IGNORE 0 LINES 
        (Acquiring Institution ID Code,Acquiring Institution Name,Service Indicator,Local Point of Service ID,Country Code,Administrative Region, Tourist Area,City / Town / Locality,Postal Code,Address,Location Name,Type of Location,Type of Access,Opening Hours,Opening Days,Card Programm Indicator,Opening Date,GPS Latitude,GPS Longitude)');

没有缺少列。 csv 文件没有列名。 DB 的列名与 write here 相同。我在 localhost 上工作,显然是 xampp。

【问题讨论】:

    标签: mysql codeigniter csv xampp mariadb


    【解决方案1】:

    我认为问题在于您的列名中的空格:

        (Acquiring Institution ID Code,Acquiring Institution Name,Service Indicator,Local Point of Service ID,Country Code,Administrative Region, Tourist Area,City / Town / Locality,Postal Code,Address,Location Name,Type of Location,Type of Access,Opening Hours,Opening Days,Card Programm Indicator,Opening Date,GPS Latitude,GPS Longitude)'
    

    反引号并重试:

     (`Acquiring Institution ID Code`,`Acquiring Institution Name` ....
    

    以后,请避免列名使用空格。保持名称全部小写也是不错的建议。

    【讨论】:

    • 谢谢,我不知道空格是个问题,也不知道`. ' 和 ' 和有什么不一样?它们是否相同但允许重叠?
    • Bactick 是 mysql 中标识符(表名、列等)的引号字符。单引号和双引号用于引用字符串、字符和时间的字符串表示等值
    • 您可以启用ANSI_QUOTES,这将允许双引号也可以作为标识符引号,但不要这样做,只需使用反引号即可。它使它不那么混乱,因为您总是知道反引号名称是一个标识符。此外,您不能保证您的查询将在关闭 ansi 报价的系统上运行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多