如何使用phpmyadmin将csv文件中的wordpress帖子导入数据库?
问题在于有很多帖子都有很多内容。 csv文件中的表包括标题,内容,帖子图片,屏幕截图,slug,类别,标签和一些自定义字段(约5或6)。
帖子应保存为草稿,内容包含html代码。
答案 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导入
从(table-prefix)_post表中获取最后一个帖子ID,并将SET设置为@PostID。
SET @PostID := (SELECT ID FROM `(table-prefix)_posts` ORDER BY ID DESC LIMIT 0, 1);
创建临时表并插入值。
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;
使用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);
然后将数据插入(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;
然后添加到任何其他表
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;