FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Mycket flitig postare
|
Klurar på att flytta min databas till ip.blogg men behöver lite hjälp med SQL.
Databaserna ser ut så här: Wordpress till höger och ip.blog till vänster. |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Kan du posta CREATE satserna för dessa två tabeller så blir det lite lättare (så slipper jag knacka in det manuellt i min databas).
Grundprincipen är dock att skriva ungefär så här: Jag har i detta lilla exempel förutsatt at kolumnerna mappar 1:1 i den ordning kolumnerna är upplagda i nedanstående SQL-sats (INSERT ... respektive SELECT ...): Kod:
-- Den trickiga delen är att mappa alla kolumnerna rätt så man får med -- så mycket info som möjligt från gamla tabellen. -- -- Det största problemet är att mappa kommentarernas parent_ID till -- huvudartikelns NYA ID i den NYA tabellen, det kan krävas att du lägger -- upp en extra kolumn med ID till den gamla databasens PK för att du -- ska få ordning på det. -- -- Ett annat problem är om det är olika datatyper som ska konverteras, -- särskilt om du har en textdatatyp som är numerisk i den nya tabellen, -- då blir det kinkigt... -- INSERT till nya tabellen INSERT INTO IPBLOG (entry_author_id, entry_date, entry) -- Hämta info från gamla tabellen SELECT post_author_id, post_date, post_excerpt FROM Wordpress; Senast redigerad av Conny Westh den 2010-12-31 klockan 12:34 |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Mycket flitig postare
|
En enkel kopiering är inte så svårt, men går det att lägga in values i samma query? Blogid till exempel har ingen motsvarighet i Wordpress databasen så där måste jag lägga in ett värde så att rätt användare får bloggposten i sin blogg.
Idealiskt vore att köra något typ: insert into ip.blogg (kol1, kol2, osv) values null, 1, 2 osv and insert into ip.blogg(kol3, kol4, osv) select val1, val2, val3 ,osv from wordpress men kan man göra så? Har bara provat att antingen lägga in värden eller kopiera, aldrig båda samtidigt... |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
När du använder VALUES så kan du ersätta det med en SELECT i stället så kan du köra samma SQL-sats för hela databasen i en enda SQL-sats, precis som jag visade i mitt förra inlägg.
Du kan inte använda begreppet VALUES samtidigt som SELECT. SELECTen är mycket mer flexibel. Förklara gärna mer var du hämtar värdet du vill ha in i blog_id så kanske jag förstår bättre. Kod:
-- Detta är en enda SQL-sats om jobbar på hela databasen... -- INSERT till nya tabellen INSERT INTO IP.BLOG (WP_ID, entry_author_id, entry_date, entry, blog_id, blupp_id) -- Hämta info från gamla tabellen med subselect för blog_id och ett exempel på¨en konstant SELECT ID, post_author_id, post_date, post_excerpt , (SELECT ...), 4 FROM Wordpress -- Du kan ju även köra satsen för olika users individuellt WHERE post_author=23; Jag vet inte hur mappningarna är mellan tabellerna så du får gärna förklara mer för mig.... Om du lägger till en extra kolumn tillfälligt med ID från Wordpress tabellen så kan du köra update i IP.BLOG i efterhand och mappa ihop tabellerna med wordpress.ID och din nya IPBLOG.WP_ID .... Senast redigerad av Conny Westh den 2010-12-31 klockan 14:06 |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Har WN som tidsfördriv
|
Jag tycker Conny krånglar till det lite.
Kod:
insert into ip.blog (col1, col2, col3, col4) VALUES('col1', (select col2, col3, col4 FROM wordpres ) ) Col2-4 hämtar du ifrån din gamla databas. Här det det viktigt att kolumnerna är i exakt samma ordning i inserten(första parentesen) som de är i values-selecten. Viktigt är också att det då är exakt samma format på datan. Är det inte exakt samma format på datan måste du nog göra ett script som gör en select-loop och konverterar datan för varje rad innan den stoppas in i den nya databasen med en insert-query. |
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Kod:
INSERT INTO ip.blog (col1, col2, col3, col4) SELECT 'val1', col2, 3, col4 FROM wordpress Det enda jag la till var lite förklarande texter/kommentarer så det skulle bli lättare att förstå. Senast redigerad av Conny Westh den 2010-12-31 klockan 16:02 |
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Mycket flitig postare
|
Så här var det tänkt
![]() INSERT INTO ibf_blog_entries ( blog_id, entry_author_id, entry_author_name, entry_date, entry_name, entry, entry_status, entry_locked, entry_edit_time, entry_html_state, entry_use_emo, entry_last_update, entry_name_seo, entry_short) SELECT {BLOG_ID}, {ENTRY_AUTHOR_ID}, {ENTRY_AUTHOR_DISPLAY_NAME}, UNIX_TIMESTAMP(post_date_gmt), post_title, post_content, (CASE WHEN post_status = 'publish' THEN 'published' ELSE 'draft' END), (CASE WHEN comment_status = 'open' THEN 0 ELSE 1 END), UNIX_TIMESTAMP(post_modified_gmt), 1, 1, UNIX_TIMESTAMP(post_modified_gmt), post_name, (CASE WHEN post_excerpt <> '' THEN post_excerpt ELSE NULL END) FROM wp_posts WHERE post_type = 'post'; |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Klarade millennium-buggen
|
Bilderna i ditt första inläggär helt oläsbara nu, kan du lägga upp tabellstrukturerna igen gärna som create staments.... ?
Funderar mest på om bölog_id var PK i IP.BLOG eller inte.... |
||
![]() |
![]() |
Svara |
|
|