3

申し訳ありませんが、これはこの投稿のエントリの複製ですが、正しい答えが得られず、SOに移動するように依頼する方法がわかりません。

CSV形式のSQLクエリを使用して、すべてのWordPress投稿と関連するメタ情報をエクスポートする必要があります。投稿だけをエクスポートできましたが、メタ情報が別のテーブルにあることに気付きました。

誰かが私がこれをどうやってやるのか教えてもらえますか?

ありがとう!

編集:私はすでにいくつかのプラグインを試しましたが、どれもこの特定のシナリオでは機能しませんでした。私は本当にクエリ自体に取り組む必要があります。ありがとう

編集:CSVファイルの最終的な結果は次のようになります。1つの行で、これらは私が最終的に使用する列です。(CSVの追加の列を削除します。ここでは、短縮バージョンを提供しています)

post_content | post_title | **meta_key** | *meta_value* | **meta_key** | *meta_value* | **meta_key** | *meta_value* | **meta_key** | *meta_value* | **meta_key** | *meta_value* 

したがって、同じ行にメタ情報がある行ごとに1つの投稿。

編集:S-ha-dumを使用して、なんとか取得できましたが、DBから引き出すためのmeta_value> meta_key値が約12あるので、残りのクエリを作成するためのヘルプが必要です。

SELECT *,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Publisher' AND wp_postmeta.post_id = wp_posts.ID) as Publisher FROM wp_posts
4

4 に答える 4

5

結局、友人が私の解決策を手伝ってくれました。これは、メタ情報を含むすべての投稿をCSVファイルにエクスポートするための彼の最後のSQLクエリでした。

SELECT DISTINCT
post_title
, post_content
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Asking Price (US\$)' AND wp_postmeta.post_id = wp_posts.ID) as "Asking Price (US\$)"
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Asking Price (ZAR)' AND wp_postmeta.post_id = wp_posts.ID) as "Asking Price (ZAR)"
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Author' AND wp_postmeta.post_id = wp_posts.ID) as Author
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Binding' AND wp_postmeta.post_id = wp_posts.ID) as Binding
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Book Condition' AND wp_postmeta.post_id = wp_posts.ID) as "Book Condition" 
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Book Number' AND wp_postmeta.post_id = wp_posts.ID) as "Book Number" 
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Book Type' AND wp_postmeta.post_id = wp_posts.ID) as "Book Type"
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Edition' AND wp_postmeta.post_id = wp_posts.ID) as  Edition
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Illustrator' AND wp_postmeta.post_id = wp_posts.ID) as Illustrator 
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Inscription' AND wp_postmeta.post_id = wp_posts.ID) as Inscription 
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'ISBN' AND wp_postmeta.post_id = wp_posts.ID) as  ISBN
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Jacket Condition' AND wp_postmeta.post_id = wp_posts.ID) as "Jacket Condition"
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Location' AND wp_postmeta.post_id = wp_posts.ID) as  Location
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Published Place' AND wp_postmeta.post_id = wp_posts.ID) as "Published Place"
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Published Year' AND wp_postmeta.post_id = wp_posts.ID) as "Published Year" 
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Publisher' AND wp_postmeta.post_id = wp_posts.ID) as Publisher 
,(SELECT meta_value FROM wp_postmeta WHERE wp_postmeta.meta_key = 'Size' AND wp_postmeta.post_id = wp_posts.ID) as Size
FROM wp_posts
WHERE post_type = 'post' 
ORDER BY
post_title
, post_content

ご意見ありがとうございます!

于 2012-10-14T17:00:48.297 に答える
0

多くのCSVエクスポートプラグインを試してください。私はこれを非常に効果的に使用しました。

于 2012-10-12T09:22:54.140 に答える
0

必要なものはすべて*_postsテーブルと*_postmetaテーブルにあると思います。

あなたがそれをすることができる2つの方法があります。まず、*_postテーブルの*_postmetaテーブルを結合します。

"SELECT * FROM {$wpdb->posts} LEFT JOIN {$wpdb->postmeta} ON {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id"

アステリックスやコースを使用する代わりに、フィールドを列挙することをお勧めします。ループして整理する必要がある投稿ごとに複数の行ができあがります。

次に、サブクエリを記述します。

"SELECT *,(SELECT meta_value FROM {$wpdb->postmeta} WHERE {$wpdb->postmeta}.meta_key = 'Publisher' AND {$wpdb->postmeta}.post_id = {$wpdb->posts}.ID) as Publisher,... FROM {$wpdb->posts}"

このコンテキストでは、サブクエリは問題なく実行されるはずです。繰り返しますが、フィールドを列挙します。

于 2012-10-12T14:40:11.313 に答える
0

カスタムフィールドインラインSQLエクスポートクエリ

私は強烈な見た目のクエリを見つけました。インラインの列にカスタムフィールドを含む投稿をプルします。クエリの「Concat」は、関連する投稿が見つかるテキストを偽装するためのものであり、任意にカスタムフィールドを追加できることに注意してください。私のSQLアプリ(Sequel Pro)には、リモートDBにクエリを実行した後に使用するCSVエクスポート機能があります。仕事はとても順調です。

SELECT *

FROM (

    SELECT 
        `wp_posts`.`ID` , 
        `wp_posts`.`post_title` AS `Title`,
        `wp_posts`.`post_date` AS `Date`,

        MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'useremail'
        THEN `wp_postmeta`.`meta_value`
        END ) AS `Email`,

        MAX( CASE WHEN `wp_postmeta`.`meta_key` = 'usercell'
        THEN `wp_postmeta`.`meta_value`
        END ) AS `Cell Phone`,

        concat('http://yoururl.com/?p=',`wp_posts`.`ID`) as `URL`

    FROM `wp_posts`

    LEFT JOIN `wp_postmeta` ON ( `wp_posts`.`ID` = `wp_postmeta`.`post_id` )

    WHERE `wp_posts`.`post_status` = 'publish'

    AND `wp_posts`.`post_type` = 'customposttype'

    GROUP BY `wp_posts`.`ID`

    ORDER BY `wp_posts`.`post_date` DESC

) AS `t` WHERE 1 =1

結果:

カスタムフィールドのインラインエクスポート結果

于 2013-02-26T07:56:29.020 に答える