如何配置节点导出到批量节点导出?


25

我正在尝试“节点导出”以进行大量节点导出,但是似乎必须选择每个节点以单独导出。

如果要导出选定内容类型的所有节点怎么办?有什么办法可以在“节点导出”中执行此操作,还是应该找到另一个模块?

Answers:


25

你可以用drush来做

$ drush help ne-export
Export nodes using Node export.

Arguments:
  nids : A list of space-separated node IDs to export.

Options:
  --file : The filename of the output file.  If supplied, the node code will be
exported to that file, otherwise it will export to stdout.
  --format : If supplied, node code will be output using a particular export
format, if available. (e.g. serialize)
  --status : Filter for 'status'; A boolean value (0 or 1) indicating whether
the node is published (visible to non-administrators).
  --promote : Filter for 'promote'; A boolean value (0 or 1) indicating whether
the node should be displayed on the front page.
  --sticky : Filter for 'sticky'; A boolean value (0 or 1) indicating whether
the node should be displayed at the top of lists in which it appears.
  --translate : Filter for 'translate'; A boolean value (0 or 1) indicating
whether the node translation needs to be updated.
  --language : Filter for 'language'; The language code (e.g. de or en-US) of
this node.
  --type : Filter for 'type'; The machine-readable name (e.g. story or page) of
the type of this node.
  --sql : Filter by SQL (EXPERIMENTAL); An SQL query string that returns nids
(e.g. "SELECT nid FROM nodes WHERE nid < 10").
  --code : Filter by PHP code (EXPERIMENTAL); PHP code that prints or returns,
an array or CSV string of nids (e.g. "custom_get_my_nids();"). Don't include PHP
tags.

例如,

drush ne-export --type=article --file=article.txt

会将所有文章节点以序列化格式输出到article.txt。然后,您可以使用drush导入它们:

$ drush help ne-import
Import nodes previously exported with Node export.

Arguments:

Options:
  --uid : User ID of user to save nodes as. If not given will use the user with
an ID of 1. You may specify 0 for the Anonymous user.
  --file : The filename of the input file.  If supplied, the node code will be
imported from that file, otherwise it will import to stdin.

例如:

drush ne-import --uid=1 --file=article.txt

*更新


谢谢,但这是否适合大量节点(> 1000)?
Codium

从理论上讲,是的,如果您为PHP提供足够的内存并设置了很高的执行时间。我认为上一次这样做时,我有数百个节点,也许接近一千。
mpdonadio

再次感谢。这是更多信息drupal.org/node/1681584。我也会尝试“视图数据导出”
Codium,2012年

1
使用Drush命令时,结果导出文件存储在硬盘上的什么位置?
Ahmad Zain 2014年

2
@AhmadZain输出存储在您指定要执行的位置。上面的命令应该将文件存储在运行命令的位置。
mpdonadio

5

您可以转到Drupal管理页面中所有内容的列表(D7中为/ admin / content),然后按内容类型过滤,然后选择全部,然后从下拉菜单中选择“节点导出”


2
是! 这是我一直在寻找的答案。这比必须安装和配置视图批量操作(VBO)容易得多。对于这样一个简单的解决方案,确实很难找到。
Magmatic

1
那只会导出该类型内容的当前页面,而不是所有类型的内容。
RichardAtHome

then select 'Node export' from the dropdown menu什么菜单?
Ejaz

它可能会回答最后一个问题。在禁用该站点已打开的admin_views_node视图并清除缓存之前,我也没有看到此消息。现在,在管理员/内容的“更新选项”下拉列表中,我看到“节点导出”的选项。或者,如果启用了该视图,则可以对其进行编辑,选择“批量操作”字段并添加“节点导出”操作。
petednz-fuzion

0

您可以将Node导出模块用于上述目的。它说:

它允许用户导出节点,然后将其导入到另一个Drupal安装或同一站点中。使用该模块,您可以节省大量时间来建立新网站,这些网站的节点与您已经建立的网站相似,将节点迁移到新的Drupal版本,或者在开发/登台/生产站点之间迁移。


0

这可能有助于您划分结果。简单的bash脚本:

#!/bin/bash
# Run this script in Drupal root app directory!
# Requirements: drush command tool installed with ne-export command (you need Node Export module installed in Drupal)

maxRows=100
startFrom=0
for i in {0..17}
do
  startFrom=$(( (i)*100 ))
  echo "SELECT nid FROM node where node.type='noticia' limit $startFrom,$maxRows" # just for debugging
  drush ne-export  --file="nodes-exported/nodes-exported-$i.json" --format='json' --sql="SELECT nid FROM node where node.type='noticia' limit $startFrom,$maxRows" # of course set your own SQL here
done

exit 0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.