CSV에서 데이터베이스 테이블 생성


15

외부 소스에서 제공된 일부 테이블 형식 데이터에 액세스 해야하는 모듈을 작업 중입니다. 두 개의 열에 불과하지만 약 40000 개의 행이 있습니다.

현재 내 모듈은 필요할 때 CSV 전체를 구문 분석하고 있습니다. 이것은 잘 작동하지만 파일 크기가 약 450Kb이므로 프로덕션 사이트에 배포되면 서버 리소스가 소모됩니다.

이 데이터를 Magento 테이블로 옮기고 싶지만 문제가 있습니다.

설치 스크립트에서 RDBMS 메소드를 사용하고 있습니다.

$installer = $this;
$installer->startSetup();

$table = $installer->getConnection()
    ->newTable($installer->getTable('my_table'))
    ->addColumn('column_a', Varien_Db_Ddl_Table::TYPE_TEXT, 5, array(
        'nullable' => false,
        ), 'Column A')
    ->addColumn('column_b', Varien_Db_Ddl_Table::TYPE_TEXT, 3, array(
        'nullable' => false,
        ), 'Column B');

$installer->getConnection()->createTable($table);

$installer->endSetup();

이것은 내 테이블을 만드는 데 잘 작동하지만 실제로 내 데이터를 가져 오는 것은 내 머리를 구부리는 것입니다 (데이터베이스 관리와 관련하여 여전히 멍청합니다).

이상적으로는 CSV 파일을 구문 분석하고 많은 복사 / 붙여 넣기를 처리하지 않고도 테이블에 값을 삽입합니다.

임의의 CSV 데이터를 처리하기위한 기본 제공 방법이 있습니까? 아니면 모두 필요한 것을 처리하기 위해 내장되어 있습니까? 내 데이터를 Magento로 가져 오는 가장 좋은 방법은 무엇입니까?

답변:


15

이러지마 놀자!

createTable()호출 후 또는 후속 스크립트에서 :

/* @var $installer Mage_Core_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();

//Extract data from CSV file
$csv = new Varien_File_Csv;
$data = $csv->getData('path/to/file.csv');

$resultNum = $installer->getConnection()->insertArray(
    $installer->getTable({TABLE NAME}),
    array({COL 1},{COL 2}),    //column names
    $data
);

//EDIT: if this is done using a data setup script, can even log the results:
Mage::log(
    __FILE__." added $resultNum records to $installer->getTable({TABLE NAME})",
    Zend_Log::INFO,
    "setup.log",
    true
);

$installer->endSetup();

와우, 나는 이것이 너무 쉬울 것이라고 기대하지 않았다! :) 희망이 작품
파비안 Blechschmidt

데이터 설정 스크립트가 필요한 결과 기록 방법을 표시하도록 조정되었습니다.
benmarks

Varien_File_Csv, 나는 어딘가에 있어야한다는 것을 알았습니다. 나는 이것을 한 번주고 결과로 업데이트 할 것이다.
pspahn

매우 간단합니다. 당신은 내 토요일을 만들었습니다. 감사합니다 @benmarks.
pspahn

2
또한 내 상황에서 Magento에 열을 추가 할 때 메모리가 부족하다는 점도 주목할 가치가 있습니다. 두 열의 데이터는 괜찮 았으며 (간단히) 세 번째 열을 추가하고 업그레이드 스크립트를 실행하자마자 Magento는 화이트 페이지와 함께 오류 메시지 / 로그가 표시되지 않습니다. CSV를 여러 파일로 분할하여 작동하도록했습니다.
pspahn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.