Php 自动格式化1000个相同的csv文件以导入MySQL?

Php 自动格式化1000个相同的csv文件以导入MySQL?,php,mysql,csv,Php,Mysql,Csv,我有大约1000个保存客户信息的csv文件,它们的格式都相同。我正在尝试将所有这些文件移动到一个MySQL数据库表中,或者全部放在一个表中,或者每个csv一个表,以可用性更好的为准 无论如何,我所能找到的只是有关使用两个csv文件执行此操作的信息,手动输入并正确格式化它们,然后导入MySQL。我不可能用超过1000个文件做到这一点 文件来自谷歌电子表格,这是该公司客户的原始宿主(每个人都有自己的数据电子表格) 转到我为公司构建的应用程序。这是我的CSV导入程序的通用版本。 创建一个表并用表替换

我有大约1000个保存客户信息的csv文件,它们的格式都相同。我正在尝试将所有这些文件移动到一个MySQL数据库表中,或者全部放在一个表中,或者每个csv一个表,以可用性更好的为准

无论如何,我所能找到的只是有关使用两个csv文件执行此操作的信息,手动输入并正确格式化它们,然后导入MySQL。我不可能用超过1000个文件做到这一点


文件来自谷歌电子表格,这是该公司客户的原始宿主(每个人都有自己的数据电子表格)


转到我为公司构建的应用程序。

这是我的CSV导入程序的通用版本。 创建一个表并用表替换“your_table_name_here”。创建所有列并在包含所有CSV文件的文件夹中运行此脚本。它将尽最大努力使所有列与数据匹配


编写一个程序,循环浏览所有CSV文件所在的目录。加载一个,按程序重新格式化,插入数据库。冲洗,起泡,重复。我一分钟前就写了一个剧本。。。我可以编写这个脚本的通用版本并发布在这里,或者您可以使用这个函数
$files=glob('*.csv')
如果您还需要帮助,请告诉我。几分钟后将发布一般答案。@Dimi不要回答过于宽泛的问题,特别是那些OP没有表现出任何努力的问题。你在开玩笑吗?它并不宽泛,它们是csv文件,与它们要进入的表中包含相同的列和行,我不知道如何循环文件并更改其格式。如果根本不知道如何去做某件事,因为这超出了你的专业范围,那就等于没有努力,我想我是有罪的
//Create database connection


$host = '127.0.0.1';
$db   = 'your_database';
$user = 'username';
$pass = 'password';
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
    ];
$pdo = new PDO($dsn, $user, $pass, $opt);



//Run this script in the folder that has all the CSV files that you want to import


//Grab list of all CSV files
$files=glob('*.csv');


foreach($files as $file)
{

    $handle = fopen($file, "r");
    $cnt = 0;
    $is_first = true;
    echo "OPENING $file\n";

    if($handle)
        //Change this value. Usually delimiter is ',' but if your CSV file has something else, you will need to modify this value
        $delimiter='|';

    while (($csv = fgetcsv($handle, 5000, $delimiter)) !== false) {

        $d = array();

        if ($is_first) {
            $is_first = false;
            $header=$csv;

            $inserter=$pdo->prepare("replace into your_table_name_here(`".implode('`,`',$header)."`)
                values (:".implode(',:',$header).");");
        }
        else {
            $to_insert=array();
            foreach($csv as $key=>$val)
            {
                $to_insert[':'.$header[$key]]=$val;
            }
            $inserter->execute($to_insert);
        }
    }
}