数据导入
🌐 Data import
4.6.0This feature requires Strapi version 4.6.0 or later.strapi import 命令是 数据管理功能 的一部分,用于从文件导入数据。默认情况下,strapi import 命令从加密且压缩的 tar.gz.enc 文件导入数据,该文件包括:
🌐 The strapi import command is part of the Data Management feature and used to import data from a file. By default, the strapi import command imports data from an encrypted and compressed tar.gz.enc file which includes:
- 项目配置,
- 实体:你所有的内容,
- 链接:你实体之间的关系,
- 资源:存储在上传文件夹中的文件,
- schemas,
metadata.json文件。
该归档遵循与 strapi export 生成的归档相同的结构:一个 .tar 包含 configuration、entities、links 和 schemas 文件夹,这些文件夹中填充了编号的 JSON lines 文件。压缩 (.gz) 和加密 (.enc) 可从文件扩展名检测,因此也可以导入一个普通的 .tar。
以下文档详细说明了自定义数据导入的可用选项。导入命令及所有可用选项均通过 Strapi CLI 运行。
🌐 The following documentation details the available options to customize your data import. The import command and all of the available options are run using the Strapi CLI.
strapi import在导入备份文件之前,会删除所有现有数据,包括数据库和上传目录。- 源模式和目标模式必须匹配才能成功使用
strapi import,这意味着所有内容类型必须完全相同。 - 恢复的数据不包括
Admin users表,这意味着在恢复的实例中createdBy和updatedBy是空的。 - 如果你正在使用云存储提供商(例如 Cloudinary、AWS S3、Azure Blob Storage、Google Cloud Storage),在导入过程中其数据库记录被删除的任何媒体文件可能会通过其删除 API 从云提供商中被永久删除。这会影响所有共享相同云存储账户的环境。为了避免远程资源的意外删除,请确保每个环境使用独立的存储桶/账户。
了解导入档案
🌐 Understand the import archive
strapi import 期望一个由 strapi export 命令 生成的相同扁平结构的归档文件:
configuration/:项目配置文件entities/:实体记录links/:实体之间的关系schemas/:模式定义metadata.json:关于导出的元数据
每个文件夹包含一个或多个 .jsonl 文件,每行代表一条记录。该格式允许你在重新导入之前编辑或转换数据。
🌐 Each folder contains one or more .jsonl files where each line represents a single record. The format allows you to edit or transform data before re‑importing it.
要准备存档以供手动审核或修改:
🌐 To prepare an archive for manual review or modification:
- Yarn
- NPM
yarn strapi export --no-encrypt --no-compress -f my-export
tar -xf my-export.tar
npm run strapi export -- --no-encrypt --no-compress -f my-export
tar -xf my-export.tar
在调整 .jsonl 文件后,重新创建归档(tar -cf my-export.tar configuration entities links schemas metadata.json)并使用 strapi import -f my-export.tar 导入。加密和压缩将根据文件扩展名自动检测。
🌐 After adjusting the .jsonl files, re‑create the archive (tar -cf my-export.tar configuration entities links schemas metadata.json) and import it with strapi import -f my-export.tar. Encryption and compression are detected automatically based on the file extension.
指定导入文件
🌐 Specify the import file
要将数据导入到 Strapi 实例中,请在目标项目根目录使用 strapi import 命令。使用 -f 或 --file 选项指定要导入的文件。需要提供文件名、扩展名和路径。如果文件已加密,在导入开始之前会提示输入加密密钥。
🌐 To import data into a Strapi instance use the strapi import command in the destination project root directory. Specify the file to be imported using the -f or --file option. The filename, extension, and path are required. If the file is encrypted, you are prompted for the encryption key before the import starts.
示例:在 Strapi 项目根目录中从文件导入数据的最小命令
🌐 Example: Minimum command to import data from a file in the Strapi project root
- yarn
- npm
yarn strapi import -f /path/to/my/file/export_20221213105643.tar.gz.enc
npm run strapi import -- -f /path/to/my/file/export_20221213105643.tar.gz.enc
示例:导入一个普通的 .tar 存档
🌐 Example: Import a plain .tar archive
- yarn
- npm
yarn strapi import -f /path/to/my/file/backup.tar
npm run strapi import -- -f /path/to/my/file/backup.tar
提供一个加密密钥
🌐 Provide an encryption key
如果你正在从加密文件导入数据,可以使用 -k 或 --key 选项通过 strapi import 命令传递加密密钥。
🌐 If you are importing data from an encrypted file the encryption key can be passed with the strapi import command by using the -k or --key option.
示例:使用 strapi import 命令传递加密密钥
🌐 Example: Pass the encryption key with the strapi import command
- yarn
- npm
yarn strapi import -f /path/to/my/file/export_20221213105643.tar.gz.enc --key my-encryption-key
npm run strapi import -- -f /path/to/my/file/export_20221213105643.tar.gz.enc --key my-encryption-key
绕过所有命令行提示
🌐 Bypass all command line prompts
使用 strapi import 命令时,你需要确认导入将删除现有的数据库内容。--force 标志允许你跳过此提示。此选项对于以编程方式实现 strapi import 非常有用。对于编程使用,你还必须为加密文件传递 --key 选项。
🌐 When using the strapi import command, you are required to confirm that the import will delete the existing database contents. The --force flag allows you to bypass this prompt. This option is useful for implementing strapi import programmatically. For programmatic use, you must also pass the --key option for encrypted files.
--force 选项的示例
🌐 Example of the --force option
- yarn
- npm
yarn strapi import -f /path/to/my/file/export_20221213105643.tar.gz.enc --force --key my-encryption-key
npm run strapi import -- -f /path/to/my/file/export_20221213105643.tar.gz.enc --force --key my-encryption-key
导入时排除数据类型
🌐 Exclude data types during import
默认的 strapi import 命令会导入你的内容(实体和关系)、文件(资源)、项目配置和模式。--exclude 选项允许你通过传递以逗号分隔且类型之间无空格的字符串来排除内容、文件和项目配置。你不能排除模式,因为模式匹配用于 strapi import。
🌐 The default strapi import command imports your content (entities and relations), files (assets), project configuration, and schemas. The --exclude option allows you to exclude content, files, and the project configuration by passing these items in a comma-separated string with no spaces between the types. You can't exclude the schemas, as schema matching is used for strapi import.
任何从导入中排除的类型将在你的目标实例中被删除。例如,如果你排除了 config,目标实例中的项目配置将被删除。
🌐 Any types excluded from the import will be deleted in your target instance. For example, if you exclude config the project configuration in your target instance will be deleted.
像图片这样的媒体由文件(资源)和数据库中的实体组成。如果使用 --exclude 标志来移除资源,数据库记录仍然会保留,并可能显示为断开的链接。
🌐 Media such as images consist of the file (asset) and the entity in the database. If you use the --exclude flag to remove assets, the database records are still included, and could render as broken links.
示例:从导入中排除资源
🌐 Example: exclude assets from an import
- yarn
- npm
yarn strapi import -f /path/to/my/file/export_20221213105643.tar.gz.enc --exclude files
npm strapi import -- -f /path/to/my/file/export_20221213105643.tar.gz.enc --exclude files
在导入时仅包含指定的数据类型
🌐 Include only specified data types during import
默认的 strapi import 命令会导入你的内容(实体和关系)、文件(资源)、项目配置和模式。--only 选项允许你仅通过传递一个不带空格的逗号分隔类型字符串来导出列出的项目。可用的值为 content、files 和 config。模式始终会被导入,因为模式匹配用于 strapi import。
🌐 The default strapi import command imports your content (entities and relations), files (assets), project configuration, and schemas. The --only option allows you to export only the listed items by passing a comma-separated string with no spaces between the types. The available values are content, files, and config. Schemas are always imported, as schema matching is used for strapi import.
像图片这样的媒体包含文件(资源)和数据库中的实体。如果你使用 --only 标志导入 content,资源数据库记录仍然会被包含,并可能显示为断开的链接。
🌐 Media such as images consist of the file (asset) and the entity in the database. If you use the --only flag to import content the asset database records are still included, and could render as broken links.
示例:仅导入项目配置
🌐 Example: import only the project configuration
- yarn
- npm
yarn strapi import -f /path/to/my/file/export_20221213105643.tar.gz.enc --only config
npm strapi import -- -f /path/to/my/file/export_20221213105643.tar.gz.enc --only config