mysql在文件中导入数据导入零与PHP的十进制数据

问题描述

我在将多个文件的csv数据加载到mysql时遇到问题。 通过phpmyadmin导入csv分隔符(一次输入一个)时,数据正确显示为带有十进制值。

但是,在导入csv文件中的值时,所有列均包含0.00。

这是PHP即时通讯使用:

// to create the headers
foreach($csvtable as $file){
    
    $table = basename($file,'.csv'); 

    mysqli_query($conn,"
    CREATE TABLE IF NOT EXISTS ".$csvtable."(
    `colum1` decimal(6,2),`colum2` decimal(6,`colum3` decimal(6,`colum4` decimal(5,`colum5` decimal(6,`colum6` decimal(6,`colum7` decimal(5,`colum8` decimal(6,`colum9` decimal(6,`colum10` decimal(5,2) 
    )
    ");
// Code to load the data from the files in the tables and ignore the header

mysqli_query($conn,"
    LOAD DATA INFILE '".$file."' INTO TABLE ".$table."
    FIELDS TERMINATED BY ';'
    IGNORE 1 LINES
    ");

csv文件中包含以下内容:

column1;column2;column3;column4;column5;column6;column7;column8;column9;column10
4.50;1.67;0.00;0.00;0.83;0.00;0.00;0.83;0.00;0.00
9.00;3.33;0.00;0.00;1.75;0.00;0.00;1.75;0.00;0.00
13.50;5.00;0.00;0.00;2.58;0.00;0.00;2.58;0.00;0.00
18.00;6.67;0.00;0.00;3.50;0.00;0.00;3.50;0.00;0.00
22.50;8.33;0.00;0.00;4.33;0.00;0.00;4.33;0.00;0.00
27.00;10.08;0.00;0.00;5.25;0.00;0.00;5.25;0.00;0.00
31.50;11.75;0.00;0.00;6.08;0.00;0.00;6.08;0.00;0.00
36.00;13.42;0.00;0.00;7.00;0.00;0.00;7.00;0.00;0.00
40.50;15.08;0.00;0.00;7.83;0.00;0.00;7.83;0.00;0.00
45.00;16.75;0.00;0.00;8.75;0.00;0.00;8.75;0.00;0.00
49.50;18.42;0.00;0.00;9.58;0.00;0.00;9.58;0.00;0.00

但负载如下:

0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00

表的结构与我由phpmyadmin本身导入的确切结构相同。 我在这里忘记了什么。

解决方法

您的代码不完整!但是我稍作改动,将其写在自己的身边,并且工作正常。在第一步中,您将组名用于板条箱表,但将其插入另一个表中。为create tableinset into使用相同的名称。

<!DOCTYPE html>
<html>
<body>

<?php

$con=mysqli_connect("localhost","user","pass","test");

echo '<br/>';


    $file = "D:\\a.csv";
    
    $table = basename($file,'.csv');
    
    echo '----------'.$table.'</br>';
    
    mysqli_query($con,"
    CREATE TABLE IF NOT EXISTS ".$table."(
    `colum1` decimal(6,2),`colum2` decimal(6,`colum3` decimal(6,`colum4` decimal(5,`colum5` decimal(6,`colum6` decimal(6,`colum7` decimal(5,`colum8` decimal(6,`colum9` decimal(6,`colum10` decimal(5,2)
    )
    ");
    // Code to load the data from the files in the tables and ignore the header
    
    mysqli_query($con,"
    LOAD DATA INFILE '".$file."' INTO TABLE ".$table."
    FIELDS TERMINATED BY ';'
    IGNORE 1 LINES
    ");
?>

</body>
</html>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...