【问题标题】:Import CSV to MySQL using a PHP Script? [duplicate]使用 PHP 脚本将 CSV 导入 MySQL? [复制]
【发布时间】:2014-02-24 15:39:32
【问题描述】:

我有一个 CSV 文件,我想将它导入数据库,然后导出带有省略列的相同数据。我该怎么做呢?有什么建议吗?

【问题讨论】:

  • 你应该阅读LOAD DATA INFILE上的文档。
  • 如果数据库只是一个临时的垃圾场,没有必要。 fgetcsv()array_splice()fputcsv() 应该是你所需要的。
  • 我建议使用ozerov.de/bigdump 会快很多。
  • 我建议编写一个代码,尝试一下,一旦遇到问题就发布一个真正的问题。对于设计问题,请访问:programmers.stackexchange.com

标签: php mysql csv import


【解决方案1】:
<?php
    $databasehost = "localhost"; 
    $databasename = "test"; 
    $databasetable = "sample"; 
    $databaseusername="test"; 
    $databasepassword = ""; 
    $fieldseparator = ","; 
    $lineseparator = "\n";
    $csvfile = "filename.csv";

        if(!file_exists($csvfile)) {
            die("File not found. Make sure you specified the correct path.");
        }

try {
    $pdo = new PDO("mysql:host=$databasehost;dbname=$databasename", 
    $databaseusername, $databasepassword,
    array(
        PDO::MYSQL_ATTR_LOCAL_INFILE => true,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        )
    );
} catch (PDOException $e) {
die("database connection failed: ".$e->getMessage());
}

$affectedRows = $pdo->exec("
    LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$databasetable`
      FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
      LINES TERMINATED BY ".$pdo->quote($lineseparator));

echo "Loaded a total of $affectedRows records from this csv file.\n";

?>

【讨论】:

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