2010-08-18 5 views
2

기존 데이터베이스와 테이블을 Drupal에서 가져 오려고합니다. 여기에 예제 테이블 구조는 다음과 같습니다기존 테이블을 Drupal 데이터베이스로 가져 오기

Table : Projects 
ProjectID 
ProjectName 
CountryID 
TypeID 

ProjectID은 기본 키, CountryID 및 유형 ID는 각각 테이블을 입력 한 나라를 가리킨 외래 키입니다.

내가 먼저 Projects content-type을 만들고, CCK를 사용하여 레거시 테이블에있는 필드를 반영한다고 생각합니다. 내 유일한 문제는 데이터를 가져 오는 것입니다. 어쨌든 이것을 자동화 할 수 있습니까?

감사합니다.

답변

1

데이터를 CSV/TSV 형식으로 가져올 수있는 경우 Node Import이 트릭을 수행해야하며 개발자가 아닌 사이트 관리자에게 적합해야합니다.

+0

csv 파일에 외래 키 ID가 있어야합니까? 나는 csv 파일에있는 열을 반영하는 Project content type을 생성한다고 가정한다. – r2b2

+0

가져올 필요가없는 것은 무엇이든 가져올 수 있습니다. 예 : 각 열은 노드에 대한 1 비트의 데이터에 해당합니다. 한 열은 제목에 해당 할 수 있고 다른 열은 CCK 필드에 해당 할 수 있습니다. 예에서 ProjectName은 노드 제목에 매핑 될 수 있으며 ID 필드는 매핑 될 수 있습니다 CCK 번호 필드 3 개로 가져 오기를 위해 CSV 파일을 작성하는 방법은 귀하에게 달려 있습니다. –

0

Migrate 모듈은 테이블에서 가져 오기를 처리합니다. 마이그레이션에는보다 복잡한 가져 오기를 수행 할 수있는 고리가 있지만 기존 테이블의 조인에서 새 테이블을 만들어 데이터를 간단하게 가져올 수 있어야합니다 (잘 설명되지 않은). 이 (안된)와 같은 뭔가 :

CREATE TABLE combined SELECT * FROM Projects p 
LEFT JOIN Country c ON c.CountryID = p.CountryID 
LEFT JOIN Type t ON t.TypeID = p.TypeID 

당신이 별도의 콘텐츠 유형에 국가 및 유형 더 분리 된 것들을 유지하기로 결정한 경우

은, 내 동료는 a pretty good tutorial on using migrate hooks을 썼다.

0

데이터를 CSV로 내보내고 외래 키를 먼저 가져 오는 경우 노드 가져 오기가 상당히 좋습니다. 그것은 노드 참조 같은 복잡한 필드와 함께 작동합니다.

그렇지 않으면 행 단위로 데이터베이스를 거쳐 레코드를 노드에 삽입하는 기본 모듈을 작성할 수 있습니다. 몇 가지 기본적인 의사 코드 :

$node->title = $row['projectName']; 
$node->type = 'project'; 
$node->country_field[0]['value'] = $row['country_name']; 
if(save_node($node)) { 
set_message('Imported node'); 
} 

Drupal에는 데이터베이스를 전환 할 수 있도록 데이터베이스가 전환되어 있습니다.

관련 문제