如何使用phpmyadmin將csv文件中的wordpress文章導入到數據庫中?如何使用phpmyadmin將csv數據導入wordpress數據庫?
問題是,有這麼多的帖子與大量的內容。 csv文件中的表格包括標題,內容,張貼圖像,截圖,slu,,類別,標籤和一些自定義字段(大約5或6)。
帖子應保存爲草稿,內容包括html代碼。
如何使用phpmyadmin將csv文件中的wordpress文章導入到數據庫中?如何使用phpmyadmin將csv數據導入wordpress數據庫?
問題是,有這麼多的帖子與大量的內容。 csv文件中的表格包括標題,內容,張貼圖像,截圖,slu,,類別,標籤和一些自定義字段(大約5或6)。
帖子應保存爲草稿,內容包括html代碼。
事實上,有大量的帖子,或帖子有很多內容,真的不應該是一個問題:這是批量導入的目的。
只要CSV是正確的,帖子中的HTML代碼也不應該是問題:它應該引用代碼,以便它仍能正確解析。
但是,您需要使用適當的列類型創建適當的表,以便您可以按原樣導入數據。 CSV不會包含有關列類型的詳細信息。
大多數列類型可能會很明顯,但如果帖子可能變得很長,您可能需要考慮對帖子內容本身使用TEXT
(或甚至LONGTEXT
)類型。
要將csv導入到MySQL,我們有Load Data Infile語法。正如第一個答案所表達的那樣,您需要根據要加載的csv文件創建表結構,然後在執行命令時將csv文件與表列進行映射。
有一篇博客文章解釋了您可能想要參考的不同use-cases for importing CSV to MySQL(也請查看評論)。
希望這會有所幫助。
我已經使用phpMyAdmin
獲取從(表前綴)_ POST表的最後一篇ID做了一個大的CSV導入,並設置爲@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;
添加帖子ID爲使用AUTO_INCREMENT + @PostID,這樣你就可以添加細節到像(表前綴)_postmeta錶鏈接表
ALTER TABLE temptable ADD Postid INT NOT NULL AUTO_INCREMENT PRIMARY
KEY FIRST;
UPDATE temptable SET Postid = (Postid + @PostID);
然後插入數據到臨時表(表前綴)彥博表
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;
您能描述一下到目前爲止您使用phpMyAdmin以及phpMyAdmin版本進行的嘗試嗎? –