如何使用phpmyadmin将csv数据导入wordpress数据库?

时间:2015-08-15 06:37:52

标签: mysql database wordpress phpmyadmin

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

问题在于有很多帖子都有很多内容。 csv文件中的表包括标题,内容,帖子图片,屏幕截图,slug,类别,标签和一些自定义字段(约5或6)。

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

3 个答案:

答案 0 :(得分:0)

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

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

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

大多数列类型可能都很明显,但您可能想要考虑使用TEXT(甚至LONGTEXT)类型的帖子内容本身,如果帖子可以得到很多长。

答案 1 :(得分:0)

要将csv导入MySQL,我们有Load Data Infile语法。当第一个答案传达时,您需要根据要加载的csv文件具有表结构,然后在执行命令时使用表列映射csv文件。

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

希望这有帮助。

答案 2 :(得分:0)

我使用phpmyadmin进行了大量的csv导入

  1. 从(table-prefix)_post表中获取最后一个帖子ID,并将SET设置为@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. 使用AUTO_INCREMENT + @PostID将post id添加到临时表中,因此您可以将详细信息添加到链接表中,如(table-prefix)_postmeta table

    ALTER TABLE temptable ADD Postid INT NOT NULL  AUTO_INCREMENT PRIMARY 
    KEY FIRST;
    UPDATE temptable SET Postid = (Postid + @PostID);
    
  4. 然后将数据插入(table-prefix)_post表

    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;