2015-08-15 168 views
0

如何使用phpmyadmin将csv文件中的wordpress文章导入到数据库中?如何使用phpmyadmin将csv数据导入wordpress数据库?

问题是,有这么多的帖子与大量的内容。 csv文件中的表格包括标题,内容,张贴图像,截图,slu,,类别,标签和一些自定义字段(大约5或6)。

帖子应保存为草稿,内容包括html代码。

+0

您能描述一下到目前为止您使用phpMyAdmin以及phpMyAdmin版本进行的尝试吗? –

回答

0

事实上,有大量的帖子,或帖子有很多内容,真的不应该是一个问题:这是批量导入的目的。

只要CSV是正确的,帖子中的HTML代码也不应该是问题:它应该引用代码,以便它仍能正确解析。

但是,您需要使用适当的列类型创建适当的表,以便您可以按原样导入数据。 CSV不会包含有关列类型的详细信息。

大多数列类型可能会很明显,但如果帖子可能变得很长,您可能需要考虑对帖子内容本身使用TEXT(或甚至LONGTEXT)类型。

0

要将csv导入到MySQL,我们有Load Data Infile语法。正如第一个答案所表达的那样,您需要根据要加载的csv文件创建表结构,然后在执行命令时将csv文件与表列进行映射。

有一篇博客文章解释了您可能想要参考的不同use-cases for importing CSV to MySQL(也请查看评论)。

希望这会有所帮助。

0

我已经使用phpMyAdmin

  1. 获取从(表前缀)_ POST表的最后一篇ID做了一个大的CSV导入,并设置为@PostID。

    SET @PostID := (SELECT ID FROM `(table-prefix)_posts` ORDER BY ID DESC LIMIT 0, 1); 
    
  2. 创建临时表并插入值。

    CREATE TEMPORARY TABLE temptable (col1 VARCHAR(255) NOT NULL, 
              col2 VARCHAR(255) NOT NULL, 
              col3 TIME NOT NULL, 
              col4 VARCHAR(255) NOT NULL, 
              col5 TIME NOT NULL, 
              col6 VARCHAR(10000) NOT NULL, 
              col7 VARCHAR(255) NOT NULL); 
    
    LOAD DATA LOCAL INFILE '/cal.csv' 
    INTO TABLE temptable 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 LINES; 
    
  3. 添加帖子ID为使用AUTO_INCREMENT + @PostID,这样你就可以添加细节到像(表前缀)_postmeta表链接表

    ALTER TABLE temptable ADD Postid INT NOT NULL AUTO_INCREMENT PRIMARY 
    KEY FIRST; 
    UPDATE temptable SET Postid = (Postid + @PostID); 
    
  4. 然后插入数据到临时表(表前缀)彦博表

    INSERT INTO `(table-prefix)_posts`(`ID`, 
         `post_author`, 
         `post_content`, 
         `post_title`, 
         `post_name`, 
         `post_excerpt`, 
         `post_type`, 
         `post_status`, 
         `comment_status` 
         ,`ping_status`, 
         `post_date`) 
    SELECT Postid, 
         1, 
         col6, 
         col1, 
         LOWER(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col1, '.', ''), '@', '-'), '&', '-'), '/', '-'), ' ' , '-'),'---','-')), 
         LEFT (col6, 200), 
         'events', 
         'publish', --to make draft set to 'draft' 
         'closed', 
         'closed', 
         STR_TO_DATE(col2,'%d/%m/%Y %r') 
    FROM temptable; 
    
  5. 然后添加到任何其他表

    INSERT INTO `(table-prefix)_postmeta`(`Post_id`,`meta_key`,`meta_value`) 
    SELECT Postid,'meta-box-startdate',TIMESTAMP(STR_TO_DATE(col2,'%d/%m/%Y %T'), col3) 
    FROM temptable;