2013-01-09 65 views
1

我有一個Magento 1.4.0.1網站,我想將所有產品以CSV格式導出。我嘗試運行導入/導出配置文件,但php.ini中的max_timeout限制對於運行該操作所需的時間來說太低。由於我的供應商不允許我設置更高的max_timeout,我必須將該站點複製到本地機器並從那裏運行配置文件。最小化數據庫,以便從Magento中導出所有產品

我的本地計算機上的Windows 7和WAMP 2.2

我複製所有文件運行,但我有真正的麻煩導入數據庫,因爲它有300MB。我配置我的php.ini有:

max_execution_time=3600 
post_max_size=999M 
memory_limit=999M 
upload_max_filesize=999M 
max_input_time=5000 

我重新啓動WAMP服務器和進口轉儲通過phpmyadmin,但我仍然得到錯誤。所以我的計劃是減少數據庫的大小,以便擁有一個功能後端和所有產品,並清空所有不重要的表。問題是我不知道哪些是重要的,哪些不重要。你能提出一張我必須保留的桌子清單或我必須清空的桌子清單嗎?

請注意,因爲我在Windows上運行WAMP,所以我沒有可能使用任何SSH命令行的東西。

回答

2

我會分享一個簡單的php腳本,我通常用它來獲得Magento數據庫轉儲,佔用空間更小。

例如,您可以在Magento根目錄下創建一個名爲tiny-dump.php的文件,並將腳本粘貼到該文件中。稍後,如果您點擊url:http://mydomain.com/tiny-dump.php ...,那麼您可以運行該腳本...如果一切正常,您會在var /目錄中找到一個包含數據庫轉儲的SQL文件。文件名包含{DB名稱} - {當前日期} .SQL

爲了您的信息,我使用了一些想法,從這篇文章:http://www.crucialwebhost.com/kb/article/log-cache-maintenance-script/

腳本會工作,如果你的主機提供已經安裝了「的mysqldump」

這裏是對腳本的鏈接:https://gist.github.com/4495889

這裏是腳本:

<?php 
$xml = simplexml_load_file('./app/etc/local.xml', NULL, LIBXML_NOCDATA); 

$db['host'] = $xml->global->resources->default_setup->connection->host; 
$db['name'] = $xml->global->resources->default_setup->connection->dbname; 
$db['user'] = $xml->global->resources->default_setup->connection->username; 
$db['pass'] = $xml->global->resources->default_setup->connection->password; 
$db['pref'] = $xml->global->resources->db->table_prefix; 

function export_tiny() { 

global $db; 

$sqlFileName = 'var/' . $db['name'] . '-' . date('j-m-y-h-i-s') . '.sql'; 

$tables = array(
    'dataflow_batch_export', 
    'dataflow_batch_import', 
    'log_customer', 
    'log_quote', 
    'log_summary', 
    'log_summary_type', 
    'log_url', 
    'log_url_info', 
    'log_visitor', 
    'log_visitor_info', 
    'log_visitor_online', 
    'index_event', 
    'report_event', 
    'report_compared_product_index', 
    'report_viewed_product_index', 
    'catalog_compare_item', 
    'catalogindex_aggregation', 
    'catalogindex_aggregation_tag', 
    'catalogindex_aggregation_to_tag' 
); 

$ignoreTables = ' '; 
foreach($tables as $table) { 
    $ignoreTables .= '--ignore-table=' . $db['name'] . '.' . $db['pref'] . $table . ' '; 
} 

$dumpSchema = 'mysqldump' . ' '; 
$dumpSchema .= '--no-data' . ' '; 
$dumpSchema .= '-u ' . $db['user'] . ' '; 
$dumpSchema .= '-p' . $db['pass'] . ' '; 
$dumpSchema .= $db['name'] .' > ' . $sqlFileName; 

exec($dumpSchema); 


$dumpData = 'mysqldump' . ' '; 
$dumpData .= $ignoreTables; 
$dumpData .= '-u ' . $db['user'] . ' '; 
$dumpData .= '-p' . $db['pass'] . ' '; 
$dumpData .= $db['name'] .' >> ' . $sqlFileName; 

exec($dumpData); 
} 

export_tiny(); 

Kno的wn問題:有時如果DB密碼包含特殊字符,腳本無法創建數據庫轉儲。

希望,這是有幫助的!

+0

你錯過了關閉''>'標記,但我已經添加了它,執行了腳本並沒有發生任何事情(沒有錯誤,但沒有轉儲)有關如何調試的想法? – Bogdan

+2

@Bogdan這是一個很好的習慣,不要關閉php標籤,當你在php文件中只有php代碼時,請檢查以下內容:http://stackoverflow.com/questions/4410704/why-would-one-omit-the-close -tag – ceckoslab

+0

你可以把這個打開php標籤之後:ini_set('display_errors',1); ...它應該顯示是否有任何錯誤。 – ceckoslab

相關問題