2012-11-12 5 views
2

Magento 설치 리소스에 관한 자습서는 this입니다.Magento 설치 프로그램 설치 불가의 삽입

어떤 시점에서 더 많은 데이터베이스 백엔드를 지원하지만 참조 된 튜토리얼에서는 테이블을 만드는 방법 만 설명했습니다.

나는 이전에 생성 된 테이블에 (불가지론 스크립트)를 삽입 데이터를위한 방법에 관한 일부 리소스/예제가 필요합니다.

답변

3

, 당신의 가장 좋은 방법은 다른 개발자, 특히 젠토 코어 개발자가 같은 일을하는 방법을 살펴 보는 것입니다. 여기

#File: app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.8.29-0.9.0.php 
$installer->getConnection()->insert($installer->getTable('sales_flat_quote'), $quoteData); 

당신은 기본적으로 데이터베이스에 대해 원시 SQL을 실행하는 몇 가지 예

#File: app/code/core/Mage/Tax/sql/tax_setup/mysql4-upgrade-0.7.2-0.7.3.php 
$installer = $this; 
/* @var $installer Mage_Core_Model_Resource_Setup */ 

$installer->startSetup(); 

if (!$installer->getConnection()->fetchOne("select * from {$this->getTable('tax_class')} where `class_name`='Shipping' and `class_type`='PRODUCT'")) { 
    $installer->run(" 
     insert into {$this->getTable('tax_class')} (`class_name`,`class_type`) values ('Shipping','PRODUCT'); 
    "); 
} 

$installer->endSetup(); 

..., 그래서 그것은 (즉, 개발자의 책임) 정도로 일반적인 유지하는 방법에있을거야 다양한 SQL (MySQL, SQL Server, Oracle 등) 환경에서 실행됩니다.

설치 리소스에서 표준 Magento 모델을 사용하지 않는 것이 좋습니다. 상황 Magento가이 마이그레이션 스크립트를 실행하면 모델이 정상적으로 실행되는 컨텍스트와 일치하지 않습니다.이 모델을 벗어날 수는 있지만 모델에서 설정 리소스 스크립트의 일반적인 Magento 모델을 사용하면 모델에서 완전히 부트 스트랩 된 Magento 시스템.

약간의 검색으로 더 많은 예제를 직접 찾을 수 있습니다. 명령 줄에 익숙하다면이 내용을 사용하십시오.

$ cd app/code/core/Mage 
$ find . -type f -wholename '*/sql/*' | xargs grep -i -r insert 
$ find . -type f -wholename '*/sql/*' | xargs ack -i insert  #if you use ack 
+0

DB에 관계없이 삽입 할 수 있는지 확인하십시오. – Zyava

1

데이터를 삽입하려면 해당 모델을 사용해야합니다. app/code/core/Mage/Dataflow/data/dataflow_setup/data-install-1.6.0.0.php에서 예 : 모든 것을 젠토 (오픈 소스)처럼

$dataflowData = array(
    array(
     'name'   => 'Export All Products', 
     'actions_xml' => '<action type="catalog/convert_adapter_product" method="load">\r\n <var name="store"><![CDATA[0]]></var>\r\n</action>\r\n\r\n<action type="catalog/convert_parser_product" method="unparse">\r\n <var name="store"><![CDATA[0]]></var>\r\n</action>\r\n\r\n<action type="dataflow/convert_mapper_column" method="map">\r\n</action>\r\n\r\n<action type="dataflow/convert_parser_csv" method="unparse">\r\n <var name="delimiter"><![CDATA[,]]></var>\r\n <var name="enclose"><![CDATA["]]></var>\r\n <var name="fieldnames">true</var>\r\n</action>\r\n\r\n<action type="dataflow/convert_adapter_io" method="save">\r\n <var name="type">file</var>\r\n <var name="path">var/export</var>\r\n <var name="filename"><![CDATA[export_all_products.csv]]></var>\r\n</action>\r\n\r\n', 
     'gui_data'  => 'a:5:{s:4:"file";a:7:{s:4:"type";s:4:"file";s:8:"filename";s:23:"export_all_products.csv";s:4:"path";s:10:"var/export";s:4:"host";s:0:"";s:4:"user";s:0:"";s:8:"password";s:0:"";s:7:"passive";s:0:"";}s:5:"parse";a:5:{s:4:"type";s:3:"csv";s:12:"single_sheet";s:0:"";s:9:"delimiter";s:1:",";s:7:"enclose";s:1:""";s:10:"fieldnames";s:4:"true";}s:3:"map";a:3:{s:14:"only_specified";s:0:"";s:7:"product";a:2:{s:2:"db";a:0:{}s:4:"file";a:0:{}}s:8:"customer";a:2:{s:2:"db";a:0:{}s:4:"file";a:0:{}}}s:7:"product";a:1:{s:6:"filter";a:8:{s:4:"name";s:0:"";s:3:"sku";s:0:"";s:4:"type";s:1:"0";s:13:"attribute_set";s:0:"";s:5:"price";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}s:3:"qty";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}s:10:"visibility";s:1:"0";s:6:"status";s:1:"0";}}s:8:"customer";a:1:{s:6:"filter";a:10:{s:9:"firstname";s:0:"";s:8:"lastname";s:0:"";s:5:"email";s:0:"";s:5:"group";s:1:"0";s:10:"adressType";s:15:"default_billing";s:9:"telephone";s:0:"";s:8:"postcode";s:0:"";s:7:"country";s:0:"";s:6:"region";s:0:"";s:10:"created_at";a:2:{s:4:"from";s:0:"";s:2:"to";s:0:"";}}}}', 
     'direction' => 'export', 
     'entity_type' => 'product', 
     'store_id'  => 0, 
     'data_transfer'=> 'file' 
    ), 
    // ... 
); 

foreach ($dataflowData as $bind) { 
    Mage::getModel('dataflow/profile')->setData($bind)->save(); 
} 
+0

원래 질문은 제품/카탈로그 데이터를 삽입하는 것이 아니라 설치 리소스/마이그레이션 시스템에 대해 특별히 묻습니다. –

+0

질문은 확실하지 않습니다.이 대답은 모델을 DATA를 삽입하는 데 사용해야한다는 사실을 강조하므로 매우 좋습니다. (Michael은 업그레이드 스크립트에서 완전히 정상입니다.) 그런데 Michael이 실제로 데이터를 거친 방법으로 삽입하려면 튜토리얼은 그에게 솔루션을 제공합니다 : $ installer-> run ("SQL"); –

+0

일부 맞춤 테이블 (특정 모듈에 필요함)에 데이터를 삽입해야하지만 일부 특정 마젠타 저장소에서 사용할 수있는 데이터베이스 관리 시스템과의 호환성을 보장하기 위해 이러한 유형의 불가지론 스크립트를 사용하고 싶습니다. – Michael