Mysql LOAD命令

时间:2010-08-04 11:43:27

标签: mysql

Mysql LOAD命令允许从csv文件导入数据

LOAD DATA INFILE 'data.csv' INTO TABLE table_main
  FIELDS TERMINATED BY ',';

如果有多个关系表

,该怎么办?
table_main
    id
    firstname
    lastname

table_type
    id
    table_main_id
    table_type_id

table_type
    id
    typename        

是否可以使用LOAD命令

加载包含以下内容的csv文件
firstname, lastname, typename
john,doe,mytypename

3 个答案:

答案 0 :(得分:1)

不,使用LOAD DATA语法无法插入多个表。一种可能的解决方法是将其加载到临时表和从那里拿走它。

答案 1 :(得分:0)

不,恕我直言。你必须

  • 首先加载到临时表,然后
  • 执行3个INSERT语句,最后
  • 删除临时表。

答案 2 :(得分:0)

你可以使用一个包含表名的数组,并为每个表名迭代。

$tables = array("table1","table2","table3","tableN");

foreach ($tables as $table ) {

 try
     {
      $this->connect = new PDO("mysql:host=$db_host;dbname=$db_name",$db_user, $db_pass,array(PDO::MYSQL_ATTR_LOCAL_INFILE => true)); 

         $this->connect->exec("LOAD DATA INFILE  'data.csv' INTO TABLE 
                            ".$table_name." 
                  FIELDS TERMINATED BY ',' ";

   }
    catch(PDOException $e) 
    {  
        echo $e->getMessage(); 
    }

我希望这能解决你的问题。