最小化数据库以便从 Magento 导出所有产品
Posted
技术标签:
【中文标题】最小化数据库以便从 Magento 导出所有产品【英文标题】:Minimize database in order to export all products from Magento 【发布时间】:2012-12-24 01:03:51 【问题描述】:我有一个 Magento 1.4.0.1 网站,我想以 CSV 格式导出所有产品。我尝试运行导入/导出配置文件,但 php.ini
中的 max_timeout 限制对于运行该操作所需的时间来说太低了。由于我的提供商不允许我设置更高的 max_timeout,我必须将站点复制到本地计算机并从那里运行配置文件。
我的本地计算机在 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 命令行内容。
【问题讨论】:
【参考方案1】:我将分享一个简单的 php 脚本,我通常使用它来获取占用空间较小的 Magento DB 转储。
例如,您可以在 Magento 根目录中创建一个名为 tiny-dump.php 的文件,并将脚本粘贴到该文件中。稍后,如果您点击 url,您可以运行脚本:http://mydomain.com/tiny-dump.php ...如果一切正常,您将在 var/ 目录中找到一个带有 DB 转储的 sql 文件。文件名将包含 DB name-current date.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();
已知问题:如果数据库密码包含特殊字符,有时脚本无法创建数据库转储。
希望对您有所帮助!
【讨论】:
你错过了结束?>
标记,但我已经添加了它,执行了脚本并且什么也没发生(没有错误,但也没有转储)关于如何调试的任何想法?
@Bogdan 最好不要关闭 php 标签,如果 php 文件中只有 php 代码,请检查:***.com/questions/4410704/…
你能把这个放在开始的php标签后面吗:ini_set('display_errors', 1); ...它应该显示是否有任何错误。
我仍然看到一个空白文件:检查一下:visagestudio.ro/tiny-dump.php。顺便说一句,值得注意的是,这是一个 Magento 1.4.0.1 站点。
您是否可以通过 FTP 访问商店的文件系统?您是否检查了 var/ 目录中的任何 .sql 文件?商店也是基于linux还是windows?以上是关于最小化数据库以便从 Magento 导出所有产品的主要内容,如果未能解决你的问题,请参考以下文章
Magento - 使用 cronjob 将产品(使用 Dataflow)导出到 CSV