php:将多个csv文件导入mysql表

时间:2014-07-16 17:44:55

标签: php mysql

<?php

error_reporting(E_ALL);
ini_set('memory_limit', '512M');
ini_set('display_errors', 'ON');

$host = "127.0.0.1"; // Host name
$username = "root"; // Mysql username
$password = ""; // Mysql password
$db_name = "test2"; // Database name
$tbl_name = "tcg_unique";

$con = mysql_connect("$host", "$username", "$password")or die("cannot connect");
$db_con = mysql_select_db($db_name) or die("cannot select DB");
$charset = mysql_set_charset('utf8',$con);

$dir_iterator = new RecursiveDirectoryIterator("/Users/jacksons/Dropbox/MTG/SQL staging");
$iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);

foreach ($iterator as $file) {
echo $file, "\n";
if(strpos($file, '.csv') !== false){
mysql_query("LOAD DATA LOCAL INFILE '$file' INTO TABLE $tbl_name") or die (mysql_error());
}
else{
    print "else";
}
}

我想从目录中加载多个csv文件。我正在打印所有文件路径,但我无法将数据加载到表中。我在mysql中尝试了一个并且导入没有问题(所有列名都匹配)。任何帮助将不胜感激。

csv看起来像: cardname供应商条件价格发货数量日期 Brimaz,Oreskos游戏城堡之王Mint 18 0.5 4 5/30/14 奇奥拉,Crashing Wave FTW游戏轻微播放13.09 NA 1 5/30/14 Kruphix芝加哥游戏的Courser在薄荷附近11.68 0.75 3 5/30/14

2 个答案:

答案 0 :(得分:1)

如果您的文件实际上是包含以逗号分隔的字段的csv文件,则必须指定字段分隔符。

LOAD DATA INFILE '$file' INTO TABLE $tbl_name FIELDS TERMINATED BY ','

如果未说明字段分隔符,则mysql将字段分隔符视为制表符(\ t)。

如果使用return carriage创建文件,monstly windows应用程序会这样做,你还需要在语句的末尾添加:

LINES TERMINATED BY '\r\n'

答案 1 :(得分:1)

如果您要导入多个csv个文件并且您手动手动,您可能还需要使用图形工具来简化工作。您可以使用Adminer

  1. 从浏览器访问adminer。
  2. 使用管理员权限登录。
  3. 选择您的数据库。
  4. 点击左侧的Import选项。
  5. 选择您的.csv文件。
  6. 按下Execute按钮。