Как настроить экспорт узлов в экспорт массовых узлов?


25

Я пробую Node Export для массового экспорта, но мне кажется, что мне нужно выбрать каждый узел для экспорта по отдельности.

Что если я хочу экспортировать все узлы выбранного типа контента? Есть ли способ сделать это в Node Export, или я должен найти другой модуль?

Ответы:


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

1
где результирующий экспортированный файл хранится на жестком диске при использовании команды Drush?
— Ахмад Заин

2
@AhmadZain Выход хранится там, где вы его указываете. Приведенная выше команда должна сохранить файл в том же месте, откуда вы ее выполнили.
— mpdonadio

5

Вы можете перейти к списку всего контента на страницах администрирования Drupal (/ admin / content в D7), затем отфильтровать по типу контента, затем выбрать все, затем выбрать «Экспорт узла» из выпадающего меню


2
Да! Это ответ, который я искал. Это намного проще, чем устанавливать и настраивать Views Bulk Operations (VBO). Для такого простого решения было действительно трудно найти.
— Magmatic

1
Это только экспортирует текущую страницу содержимого этого типа, но не ВСЕ содержимое типа.
— RichardAtHome

then select 'Node export' from the dropdown menuкакое меню?
— Ejaz

это может ответить на этот последний вопрос. Я также не видел этого, пока не отключил представление admin_views_node, которое было включено для этого сайта, и не очистил кеш. теперь в раскрывающемся списке «Параметры обновления» в разделе «admin / content» я вижу опцию «экспорт узла». В качестве альтернативы, если у меня включено это представление, я могу отредактировать его, выбрать поле «Массовые операции» и добавить операцию «Экспорт узла».
— 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.