【问题标题】:Trying to load CSV into MySql table depending on name尝试根据名称将 CSV 加载到 MySql 表中
【发布时间】:2015-01-25 23:15:27
【问题描述】:

您好,我正在尝试编写一个脚本,该脚本将根据名称将 csv 加载到不同的表中。

例如,应将 Brooklyn Nets 24-01-2015.csv 或 Brooklyn Nets 28-01-2015.csv 加载到 mysql 数据库上的 Brooklyn Nets 表中,但应跳过 Boston Celtics 24-01-2015.csv。 CSV 字段与表格匹配,因此无需映射。

我不知道从哪里开始。有没有人指点一下?

【问题讨论】:

  • 如果不是文件名中的日期,这对于mysqlimport 来说将是一项简单的任务。也许先操作文件名,然后将文件提供给该工具?

标签: php mysql database csv


【解决方案1】:

这里有关于如何导入 CSV 的完整示例

<?php

$connect = mysql_connect('localhost','root','12345');
if (!$connect) {
die('Could not connect to MySQL: ' . mysql_error());
}

$cid =mysql_select_db('test',$connect);
// supply your database name

define('CSV_PATH','C:/wamp/www/csvfile/');
// path where your CSV file is located

$csv_file = CSV_PATH . "infotuts.csv"; // Name of your CSV file
$csvfile = fopen($csv_file, 'r');
$theData = fgets($csvfile);
$i = 0;
while (!feof($csvfile)) {
$csv_data[] = fgets($csvfile, 1024);
$csv_array = explode(",", $csv_data[$i]);
$insert_csv = array();
$insert_csv['ID'] = $csv_array[0];
$insert_csv['name'] = $csv_array[1];
$insert_csv['email'] = $csv_array[2];
$query = "INSERT INTO csvdata(ID,name,email)
VALUES('','".$insert_csv['name']."','".$insert_csv['email']."')";
$n=mysql_query($query, $connect );
$i++;
}
fclose($csvfile);

echo "File data successfully imported to database!!";
mysql_close($connect);
?>

(来源:http://www.infotuts.com/import-csv-file-data-in-mysql-php/

关于如何从文件名中获取表名,当你获取上传的文件时尝试解析名称,你会得到表:

if ($_FILES[csv][size] > 0) { 

    //get the csv file 
    $file = $_FILES[csv][tmp_name];  <-- // Parse this
   ...
}

【讨论】:

  • 如果 csv 的名称与我给出的示例中的不同,这会起作用吗?
  • 在 tmp_name 里面你会找到文件名,你可以验证(检查正确的格式)和解析来提取表名。它将包含原始文件名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多