---
title: 从 Shopify 导出商品数据为 CSV 格式
date: 2025-03-28
categories:
  - ai
  - data-integration
  - json
  - xml
tags:
  - ai-assistants
  - data-mapping
  - json-editor
  - pdf
  - xml-editor
description: MapForce 中的图形化工具可以轻松地将 Shopify 中的数据导出，并将其写入其他格式，例如 XML、数据库或 Excel 文件。
---
Status: #blog

Tags:  #mapforce #shopify

Categories: [data-integration](/blog/zh/category/data-integration.md) | [etl](/blog/zh/category/etl.md) 
# 从 Shopify 导出商品数据为 CSV 格式

Shopify是一个非常受欢迎的电商平台，被各种规模的零售企业广泛使用。虽然Shopify提供了易于使用的工具来搭建和运营在线商店，但管理大量后台数据，例如产品目录、客户信息、订单记录和库存，可能会变得非常复杂。

企业通常需要将 Shopify 数据与后端数据库、ERP 系统、CRM 系统、数据仓库或其他平台进行集成，以简化运营、进行更深入的分析，或支持自动化工作流程。

这时，一款支持Shopify的数据映射工具就显得至关重要，它能够帮助企业高效、准确地在Shopify和其他系统之间进行数据转换、映射和传输。

让我们来看一个常见的例子：使用MapForce中的可视化工具，将Shopify中的产品数据提取到CSV文件中。

![Shopify 博客文章](/blog/images/Shopify_CSV1_blog.jpg)

<!--more-->
## How Can You Get Data Out of Shopify?

虽然Shopify提供了企业建立和管理店铺所需的工具，但要从该平台获取用于其他任务所需的数据，操作起来会稍微复杂一些。

Shopify 过去曾提供多种 API 和工具，旨在帮助开发者访问和导出数据，但他们最近已将 [**GraphQL**](https://graphql.org/) 作为首选的 API 格式。实际上，他们很快将要求所有新的 Shopify 应用都使用 GraphQL。GraphQL 这种方式允许进行高度定制化的查询，使商家能够仅通过一次 API 调用请求他们所需的确切数据，从而提高性能并减少不必要的的数据传输。

![Shopify 标志，配有 GraphQL 符号](/blog/images/shopify-graphql.png)

Shopify 提供了两个主要的 GraphQL API，旨在帮助开发者或 IT 专家访问商店数据：

- **Shopify 管理后台 GraphQL API：** 这是用于后台操作的主要 API。它提供对商店前台数据的访问，例如产品、订单、客户、库存、物流信息等。开发者可以使用 Admin GraphQL API 来提取和映射数据到其他系统。

- **Shopify 商店前端 GraphQL API：** 虽然商店前端 API 主要用于构建定制的购物体验和前端应用程序，但它也提供了对面向公众的商店数据的访问，例如商品列表、商品分类和结账流程。这对于希望将 Shopify 数据集成到面向客户的平台上的企业来说尤其有用，例如定制的移动应用程序。

## 使用 MapForce 集成 Shopify 数据

开发者可以使用 MapForce 来 [将 Shopify 数据与其他数据格式和系统集成](https://www.altova.com/zh/mapforce/convert-shopify-graphql)。他们可以通过创建自定义映射，直接调用这些 GraphQL API。MapForce 支持将 Shopify 作为任何数据集成项目的源或目标，它就像一座桥梁，将 Shopify 的数据结构转换为目标数据结构所需的格式——或者反之亦然。

要开始使用，开发者需要在他们的 Shopify 商店中创建一个**自定义应用程序**。自定义应用程序提供必要的 API 凭证和权限，以安全地与 Shopify 的 API 进行交互。与 Shopify 应用商店中列出的**公共应用程序**不同，这些应用程序由 Shopify 合作伙伴提供，供一般用户使用；而自定义应用程序是专门为单个商店的特定用途而开发的，并且不能供其他商店使用。这使得企业能够完全控制其数据如何在数据集成或[ETL 项目](https://www.altova.com/zh/etl)中被访问和使用。

## 将 MapForce 连接到 GraphQL API

为了将 Shopify 数据集成到其他系统中，可以使用管理后台或店铺前端的 GraphQL API，Shopify 商家需要完成以下几个关键步骤：

1. **支持自定义应用程序开发** 
	Shopify 默认情况下限制了自定义应用的创建，以帮助保护商家免受未经授权的 API 访问。在创建自定义应用之前，商店所有者或管理员必须首先在 Shopify 后台设置中启用自定义应用开发功能。

2.   **创建自定义应用程序（“开发应用程序”）**
	一旦启用了自定义应用开发功能，下一步就是创建自定义应用本身。这可以通过以下方式实现： **“开发应用程序”** 该部分允许商店所有者或开发者定义新的应用程序，专门用于API集成。

3.   **分配正确的API访问权限范围**
	Shopify 使用细粒度的权限范围来控制应用程序可以访问的数据。根据具体的业务场景，应用程序需要被授予相应的管理API或商店API权限（例如：读取订单、写入产品、读取客户信息）。

4.   **在 Shopify 商店中安装自定义应用程序**  
	在应用程序配置完成并分配了权限范围后，必须将其直接安装到 Shopify 商店中。这个安装过程会生成必要的 API 凭据，包括 API 访问令牌。

5.   **获取并存储 API 访问令牌**  
	访问令牌可提供安全、经过身份验证的访问权限，用于访问 Shopify 的 API。您的外部数据映射工具将使用此令牌来验证 API 请求。

## 将 Shopify 数据映射到 CSV 格式 

现在，让我们来看一个在 MapForce 中实现的 GraphQL 映射示例。这个映射项目满足一个常见的需求：将 Shopify 产品数据提取到 CSV 文件中，以便上传到其他系统，或者仅仅是为了将其导入到 Excel 中进行分析。

在地图项目中插入 Shopify 组件时，MapForce 会引导您完成以下步骤：输入您的店铺名称，选择“管理后台 API”或“店铺前台 API”，以及输入您的 API 访问令牌。接下来，您可以定义连接设置，配置 HTTP 安全设置（如果需要），添加相关的头部参数，并创建查询或修改操作。

![Shopify API 设置](/blog/images/shopify-api-settings.png)

要实现这一点，您可以在左侧动态构建 GraphQL 查询，方法是从右侧提供的选项中选择元素，系统会引导您完成整个过程。您还可以点击“获取模式”按钮，让 MapForce 根据服务器的自检信息和 GraphQL 查询，自动创建 API 响应的 JSON 模式定义（您可以将该模式的缓存版本保存在本地，以便在以后的映射过程中使用）。

在这个例子中，我们将使用一个查询来获取产品信息，并且在构建查询的过程中，我们将指定希望从左侧的各个节点返回的数据：id、标题，以及对应的变体，包括它们的sku和价格。 在这篇博文中，我们不会详细介绍GraphQL的工作原理，但网上有很多相关资源，例如[https://graphql.org/learn/](https://graphql.org/learn/)和[https://www.shopify.com/partners/blog/getting-started-with-graphql](https://www.shopify.com/partners/blog/getting-started-with-graphql)，您可以利用这些资源来更深入地了解GraphQL。

接下来，MapForce会将Shopify的调用插入为一个图形化组件，该组件会显示API请求和响应的结构。

![在 MapForce 中调用 Shopify API](/blog/images/shopify-api-call.png)

这里开始变得有些复杂：由于 Shopify 的 GraphQL API 基于分页，并且每次调用 API 时只返回一定数量的结果（即一页结果），因此我们需要多次调用 API 才能检索到查询结果中的所有节点。我们将通过将此 API 调用封装在一个自定义函数中来实现，我们称这个函数为 `getProducts`。如果还有其他页面需要检索，我们可以递归地调用这个函数。

您可以在 `getProducts` 函数内部的映射关系中，在右下角看到以下内容：

![MapForce 功能](/blog/images/MapForce-function.png)

基本上，当首次调用API时，`hasNextPage` 返回值为真时，我们将再次递归地调用相同的函数，并将 `$after` 变量设置为由上一次API调用返回的 `endCursor` 位置。此外，为了避免超过API的调用速率限制，我们将在每次API调用之间暂停1秒。

此外，显然，对 `getProducts` 函数的递归调用所得到的结果也会被追加到外部 `getProducts` 函数的结果中，这样最终我们才能将所有结果返回到主映射中。

通过将实际的 API 调用封装在这个 `getProducts` 函数中，我们也在实现一种非常简洁和清晰的设计，这种设计主要用于处理 API 调用的结果，并将这些结果转换为最终的 CSV 文件

![从 Shopify 提取数据](/blog/images/Shopify-data-mapping%201.png)

这个示例项目自带 MapForce，您可以通过输入自己的 Shopify 商店名称和访问令牌来运行它。要做到这一点，请打开“示例项目”中的“Shopify_ExportAllProducts.mfd”示例文件，然后双击“getProducts”函数，最后双击“Web Service POST”调用对象。 在这里，您需要输入您的商店的网址，以及正确的 Shopify 访问令牌。

完成上述操作后，您应该能够切换到“输出”选项卡，并查看以CSV格式生成的您的所有产品列表的预览。

![将 Shopify 数据导出为 CSV 格式](/blog/images/Shopify-CSV.png)

您可以直接保存输出结果，或者将此映射项目部署到 [MapForce Server](https://www.altova.com/zh/mapforce-server)，以实现高性能的自动化。


MapForce 提供的图形化工具可以轻松将 Shopify 中的数据导出为 CSV 格式，以及其他格式，如 XML、数据库、Excel 等。



**您可以免费试用 MapForce 30 天，体验其强大功能。访问 [https://www.altova.com/mapforce/download](https://www.altova.com/zh/mapforce/download) 即可下载试用版。**



了解更多关于Shopify数据集成的信息，请阅读我们关于如何为...创建移动应用程序的文章 [采集库存信息，并将这些信息与Shopify平台进行关联](https://www.altova.com/blog/updating-shopify-inventory-from-a-mobile-app/) 实时地。

---

