php - 将 CSV 导入 Mysql 期间的 NULL 字段

标签 php mysql sql csv import

我必须使用 PHP 脚本将 CSV 文件导入 MySql 数据库的表中。 CSV 文件如下:

"giorno","lmedollton","changedolleuro","euroton","lmesterton","delnotiz","girm","sgm"
"2016-09-02", "100.01", "4005.09", "5000", "1.09", "120.09", "100.5", "200.77"
"2016-09-03", "150.01", "4205.09", "5600", "1.10", "150.09", "300.5", "300.77"

表结构如下:

#   Campo   Tipo    Collation   Attributi   Null    
    1   id  int(20)         No  Nessuno AUTO_INCREMENT   
    2   giorno  date            Sì  NULL    
    3   lmedollton  float           Sì  NULL         
    4   changedolleuro  float           Sì  NULL         
    5   euroton float           Sì  NULL         
    6   lmesterton  float           Sì  NULL         
    7   delnotiz    float           Sì  NULL          
    8   girm    float           Sì  NULL         
    9   sgm float           Sì  NULL            

有两个问题:

1) 使用此 PHP 代码:

    $csvFile = "../scripts/tabella.csv";

        $db = @mysql_connect('***', '***', '***');
        @mysql_select_db('***');

        $query = 'LOAD DATA LOCAL INFILE \' '. $csvFile .' \' INTO TABLE rame FIELDS TERMINATED BY \',\' ENCLOSED BY \'"\' LINES TERMINATED BY \'\n\' 
(giorno,lmedollton,changedolleuro,euroton,lmesterton,delnotiz,girm,sgm)';

        if(!mysql_query($query)){
            die(mysql_error());
        }
        //@mysql_query($query);

        mysql_close($db);

mysql_error 返回“找不到文件”;我也尝试使用 realpath 函数,但错误是一样的。 CSV 文件位于 www.valuebiz.it/valuebiz/scripts/tabella.csv 的站点服务器中,其权限为 777。像 URL 一样使用此路径我可以正确下载 tabella.csv。 哪个是我必须使用的正确路径?

2) 我试图在我的本地主机上运行查询并且它运行了但是添加记录的每个字段都是 NULL。该表有9个字段包括id字段(自增):第一个是DATE类型,其他是FLOAT类型。 为什么插入的值是 NULL?

你能帮帮我吗? 谢谢!

最佳答案

我发现您的导入尝试存在三个主要问题。首先,如果文件路径错误,则不会移动任何东西。其次,您应该在命令末尾使用 IGNORE 1 LINES 来告诉 MySQL 您的 CSV 文件在开头有一个单行标题。第三,我认为您应该使用 LOAD DATA INFILE,而不是 LOAD DATA LOCAL INFILE,因为您是从服务器而不是客户端执行此代码的。尝试以下方法:

window :

LOAD DATA INFILE 'C:/path/to/data.csv' INTO TABLE rame
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(giorno, lmedollton, changedolleuro, euroton, lmesterton, delnotiz, girm, sgm);

Unix:

LOAD DATA INFILE '\path\to\data.csv' INTO TABLE rame
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(giorno, lmedollton, changedolleuro, euroton, lmesterton, delnotiz, girm, sgm);

关于php - 将 CSV 导入 Mysql 期间的 NULL 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39870730/

相关文章:

sql - 使用 SQL 查询没有标题行的 Excel 工作表

mysql - 在mysql中获取时间戳中的一天的开始和结束

php - 通过 MYSQL Explode 只允许 1 个赞成票

php - 通过 css 和 html 添加响应样式后,注册和登录表单停止响应

php - 为什么这个准备好的插入到 MySql 中时 PDO 插入了错误的值?

MySql Double join 一个表和一个 View 表

php - 为什么数据库结果不显示重音?

php - MySQLi 显示 PHP 代码

php - 比较单词,还需要找复数和ing?

mysql - 如何用行更新 SQL 表?