【问题标题】:Importing Excel sheet into phpMyAdmin将 Excel 工作表导入 phpMyAdmin
【发布时间】:2015-12-14 02:34:31
【问题描述】:

我目前正在使用 phpMyAdmin,但遇到了问题。将我的 CSV 导入 phpMyAdmin 时,它会将数字四舍五入。我已将列设置为浮点数,并将 Excel 中的列设置为数字(也尝试过文本/常规),但无济于事。有没有其他人遇到过这个问题并找到了可行的解决方法?

第二个问题,我是否可以上传 CSV 文件,使其将 phpMyAdmin 中的列名与 Excel 列名匹配,并在正确的列中输入数据?

【问题讨论】:

  • 将列数据类型设置为 varchar()
  • 为什么这被标记为php?
  • 为了确认,以供有此问题的人将来参考,将带有数字的列设置为 varchar() 确实解决了问题。谢谢,Roihitr。
  • @Dannys19 你必须手动操作??
  • @Moderator 是的,我必须进入我的 PHPmyAdmin 数据库并手动将其更改为 varchar(),并将 excel 中的列更改为数字。

标签: mysql excel csv phpmyadmin


【解决方案1】:
  1. 您的文件应如下所示(十进制字段为通用类型):

xlssheet

  1. 另存为 CSV。文件可能会用 ;分开

这是给新表的:

  1. 打开phpMyAdmin,选择你的数据库,点击导入,选择要上传的文件
  2. 如果没有选择,则将格式更改为 CSV
  3. 格式特定选项的更改 - 列分隔:;
  4. 确保选中复选框(文件的第一行包含表列名称(如果未选中,第一行将成为数据的一部分))被选中
  5. 点击前往
  6. 将根据 CSV 中的 forst 行的结构创建新表。

这是针对现有表的:

  1. 打开phpMyAdmin,选择你的数据库,CHOOSE YOUR TABLE与导入文件的结构相匹配,点击导入并选择要上传的文件
  2. 如果没有选择,则将格式更改为 CSV
  3. 格式特定选项的更改 - 列分隔:;
  4. 将跳过查询数更改为 1(这将跳过包含列名的第一行)
  5. 点击前往
  6. 具有与 CSV 相同结构的选定表将被更新并插入 CSV 中的行。

【讨论】:

    【解决方案2】:
    // connecting dB
    $mysqli = new mysqli('localhost','root','','testdB');
    
    // opening csv
    $fp = fopen('data.csv','r');
    
    // creating a blank string to store values of fields of first row, to be used in query
    $col_ins = '';
    
    // creating a blank string to store values of fields after first row, to be used in query
    $data_ins = '';
    
    // read first line and get the name of fields
    $data = fgetcsv($fp);
    for($field=0;$field< count($data);$field++){
        $col_ins = "'" . $col[$field] . "' , " . $col_ins;
    }
    
    // reading next lines and insert into dB
    while($data=fgetcsv($fp)){
        for($field=0;$field<count($data);$field++){
            $data_ins = "'" . $data[$field] . "' , " . $data_ins;
        }
        $query = "INSERT INTO `table_name` (".$col_ins.") VALUES(".$data_ins.")";
        $mysqli->query($query);
    }    
    echo 'Imported...';
    

    【讨论】:

    • 一些解释会很好。
    【解决方案3】:

    我也遇到了同样的问题。 解决了将整数部分和小数部分之间的分隔符从逗号改为点的问题。

    即 365,40 至 365.40

    这对我有用。

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多