【问题标题】:import multiple table data into mysql using single csv file使用单个csv文件将多个表数据导入mysql
【发布时间】:2012-04-17 22:53:54
【问题描述】:
我在 csv 文件中有这个表
现在我有两个处理这个 csv 文件的 mysql 表,
数据 A、B、C 必须存储在 Table1 中,而数据 D、E、F、G、H 必须存储在 Table2 中。
我有上述格式的 csv 文件,如何将其数据上传到MYSQL 数据库??
这样就可以从同一个文件输入不同的表。
【问题讨论】:
标签:
mysql
file-upload
csv
multiple-tables
【解决方案1】:
试试这个效果很好,您可以根据 CSV 文件中的列数添加尽可能多的值。
<?php
$fname = $_FILES['csv_file']['name'];
$chk_ext = explode(".",$fname);
$filename = $_FILES['csv_file']['tmp_ name'];
$handle = fopen($filename, "r");
if(!$handle){
die ('Cannot open file for reading');
}
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE)
{
$query = "INSERT INTO tablename (col1_csv, col2_csv)
values ('$data[0]', '$data[1]');
mysql_query($query)
or die(mysql_error());
$query1 = "INSERT INTO tablename (col1_csv, col2_csv)
values ('$data[0]', '$data[1]');
mysql_query($query1)
or die(mysql_error());
}
fclose($handle);
?>
【解决方案2】:
可能只能通过自定义脚本(PHP 左右)...
但通常不难将 CSV 拆分为 2 个文件,然后直接使用 MySQL 中的 LOAD_DATA 函数将这两个文件导入单独的表中。这将比使用 phpMyAdmin 或类似脚本快得多。
【解决方案3】:
将数据加载到temporary table,然后拆分到two tables。
然后drop 那个temporary table。我在某处读到 php 可以做到这一点,但我无法在 php 代码中提供帮助。