如何将带有md5列的csv导入mysql

时间:2015-03-31 23:54:08

标签: mysql csv md5

我正在尝试将.csv文件导入MySql

这是我的.csv文件:

 ,AI,MD5('AIRT2015'),RRHH,14,,,AION S.A. DE C.V.,

这是我的db结构:

enter image description here

当我上传.csv文件时,我看到的密码与我的.csv文件完全相同...

关于如何加密上传它的任何想法?

谢谢

1 个答案:

答案 0 :(得分:2)

首先,网上有关于为什么单独使用MD5存储密码不是一个好主意的帖子(请参阅此great answer或搜索谷歌了解更多信息),但要实现你的目标想要使用md5哈希作为示例,您需要在没有.csv包装器的md5()文件中使用密码,并使用某种脚本语言来解析文件并INSERT将值放入数据库中。例如,如果它是一个Web应用程序,您可以使用以下行中的PHP

<?php
// database variables, change these to your details
$dbhost = 'localhost';
$dbusername = 'username';
$dbpassword = 'password';
$dbname = 'database';
$tablename = '`table`';
// file path
$filepath = 'path/to/file.csv';

// connect to the database
$db = mysqli_connect($dbhost, $dbusername, $dbpassword, $dbname);

// get the contents of your file as an array of lines
$lines = file($filepath);

// loop through lines in the array
foreach($lines as $line) {
    // split the lines by comma
    $split = explode(',', $line);
    // we know that the password will be the third element in the array...
    // so we hash it and push it back in the same point in the array
    $split[2] = md5($split[2]);
    // build sql query
    $sql = "INSERT INTO {$tablename} (ID_ASOCIADO,USERNAME,PASSWORD,...) VALUES ('" . implode("','", $split) . "')";
    // run query and put result into variable
    $result = mysqli_query($db, $sql);
    if ($result === TRUE) {
        echo "RECORD CREATED SUCCESSFULLY => " . $line . PHP_EOL;
    } else {
        echo "INSERT FAILED WITH ERROR => " . mysql_error($db);
    }
}

有关使用phpmysqli的详细信息,请参阅here。它们有很多很好的例子和解释,特别是在双界面和语句页面上。