ใช้งานการกู้คืนช่วงเวลา (PITR)

หน้านี้อธิบายวิธีใช้การกู้คืนช่วงเวลา (PITR) เพื่อเก็บรักษาและกู้คืนข้อมูลใน Cloud Firestore

หากต้องการทำความเข้าใจแนวคิด PITR โปรดดูการกู้คืนช่วงเวลา

สิทธิ์

หากต้องการรับสิทธิ์ที่จำเป็นในการจัดการการตั้งค่า PITR โปรดขอให้ผู้ดูแลระบบมอบบทบาท IAM ต่อไปนี้ในโปรเจ็กต์ที่คุณต้องการเปิดใช้ PITR

  • เจ้าของ Cloud Datastore (roles/datastore.owner)

สำหรับบทบาทที่กำหนดเอง ให้ตรวจสอบว่าได้รับสิทธิ์ต่อไปนี้แล้ว

  • วิธีเปิดใช้ PITR เมื่อสร้างฐานข้อมูล datastore.databases.create
  • วิธีอัปเดตการตั้งค่า PITR ในฐานข้อมูลที่มีอยู่: datastore.databases.update,datastore.databases.list
  • หากต้องการอ่านข้อมูล PITR ให้ใช้ datastore.databases.get,datastore.entities.get,datastore.entities.list
  • วิธีส่งออกข้อมูล PITR: datastore.databases.export
  • วิธีนำเข้าข้อมูล PITR: datastore.databases.import
  • วิธีโคลนฐานข้อมูล: datastore.databases.clone

ก่อนเริ่มต้น

โปรดทราบประเด็นต่อไปนี้ก่อนเริ่มใช้ PITR

  • คุณไม่สามารถเริ่มอ่านข้อมูลย้อนหลัง 7 วันได้ทันทีหลังจากเปิดใช้ PITR
  • หากต้องการเปิดใช้ PITR เมื่อสร้างฐานข้อมูล คุณต้องใช้คำสั่ง gcloud firestore databases create ระบบไม่รองรับการเปิดใช้ PITR ขณะสร้างฐานข้อมูลโดยใช้คอนโซล Google Cloud
  • Cloud Firestore จะเริ่มเก็บรักษาเวอร์ชันต่างๆ ตั้งแต่จุดนั้นเป็นต้นไปหลังจากเปิดใช้ PITR
  • คุณจะอ่านข้อมูล PITR ในกรอบเวลา PITR ไม่ได้หลังจากปิดใช้ PITR
  • หากคุณเปิดใช้ PITR อีกครั้งทันทีหลังจากปิดใช้ ข้อมูล PITR ที่ผ่านมาจะใช้งานไม่ได้อีกต่อไป ระบบจะลบข้อมูล PITR ที่สร้างขึ้นก่อนปิดใช้ PITR หลังจากวันที่หมดอายุของ PITR
  • หากคุณลบข้อมูลโดยไม่ตั้งใจในช่วง 1 ชั่วโมงที่ผ่านมาและปิดใช้ PITR ไว้ คุณสามารถกู้คืนข้อมูลได้โดยเปิดใช้ PITR ภายใน 1 ชั่วโมงนับจากที่ลบข้อมูล
  • การอ่านข้อมูล PITR ที่หมดอายุจะดำเนินการไม่สำเร็จ

เปิดใช้ PITR

ก่อนใช้ PITR ให้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud เฉพาะโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินเท่านั้นที่ใช้ฟังก์ชัน PITR ได้

วิธีเปิดใช้ PITR สำหรับฐานข้อมูล

คอนโซล

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิกการกู้ข้อมูลคืนหลังจากภัยพิบัติ

  4. คลิกแก้ไขเพื่อแก้ไขการตั้งค่า

  5. เลือกช่องทำเครื่องหมายเปิดใช้การกู้คืนช่วงเวลา แล้วคลิกบันทึก

การเปิดใช้ PITR จะทำให้เกิดค่าใช้จ่ายสำหรับพื้นที่เก็บข้อมูล ดูข้อมูลเพิ่มเติมได้ที่ราคา

หากต้องการปิดใช้ PITR ให้ล้างช่องทำเครื่องหมายเปิดใช้การกู้คืนช่วงเวลาจากหน้าการกู้ข้อมูลคืนหลังจากภัยพิบัติในคอนโซล Google Cloud

gcloud

เปิดใช้ PITR ระหว่างการสร้างฐานข้อมูลด้วยคำสั่ง gcloud firestore databases create และ --enable-ptir ดังนี้

gcloud firestore databases create\
  --location=LOCATION\
  --database=DATABASE_ID\
  --type=firestore-native\
  --enable-pitr

แทนที่ค่าดังนี้

  • LOCATION - ตำแหน่งที่คุณต้องการสร้างฐานข้อมูล
  • DATABASE_ID - ตั้งค่าเป็นรหัสฐานข้อมูล

คุณปิดใช้ PITR ได้โดยใช้คำสั่ง gcloud firestore databases update ดังนี้

gcloud firestore databases update\
  --database=DATABASE_ID\
  --no-enable-pitr

แทนที่ค่าดังนี้

  • DATABASE_ID - ตั้งค่าเป็นรหัสฐานข้อมูลหรือ (ค่าเริ่มต้น)

ดูระยะเวลาเก็บรักษาและเวลาของเวอร์ชันแรกสุด

คอนโซล

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง ให้คลิกการกู้ข้อมูลคืนหลังจากภัยพิบัติ

  4. ในส่วนการตั้งค่า ให้จดระยะเวลาเก็บรักษาและเวลาของเวอร์ชันแรกสุดไว้

    • ระยะเวลาเก็บรักษา: ระยะเวลาที่ Cloud Firestore เก็บรักษาข้อมูลทุกเวอร์ชันสำหรับฐานข้อมูล ค่าจะเป็น 1 ชั่วโมงเมื่อปิดใช้ PITR และ 7 วันเมื่อเปิดใช้ PITR
    • เวลาของเวอร์ชันที่เก่าที่สุด: การประทับเวลาที่เก่าที่สุดที่สามารถอ่านข้อมูลเวอร์ชันเก่าได้ในกรอบเวลา PITR Cloud Firestore จะอัปเดตค่านี้อย่างต่อเนื่องและจะล้าสมัยทันทีที่มีการค้นหา หากคุณใช้ค่านี้เพื่อกู้คืนข้อมูล โปรดคำนึงถึงเวลาตั้งแต่ตอนที่ค้นหาค่าจนถึงตอนที่คุณเริ่มการกู้คืน
    • การกู้คืนช่วงเวลา: แสดง Enabled หากเปิดใช้ PITR หากปิดใช้ PITR คุณจะเห็น Disabled

gcloud

เรียกใช้คำสั่ง gcloud firestore databases describe ดังนี้

gcloud firestore databases describe --database=DATABASE_ID

แทนที่ DATABASE_ID ด้วยรหัสฐานข้อมูลหรือ '(default)'

เอาต์พุตมีดังนี้

    appEngineIntegrationMode: ENABLED
    concurrencyMode: PESSIMISTIC
    createTime: '2021-03-24T17:02:35.234Z'
    deleteProtectionState: DELETE_PROTECTION_DISABLED
    earliestVersionTime: '2023-06-12T16:17:25.222474Z'
    etag: IIDayqOevv8CMNTvyNK4uv8C
    keyPrefix: s
    locationId: nam5
    name: projects/PROJECT_ID/databases/DATABASE_ID
    pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_DISABLED
    type: FIRESTORE_NATIVE
    uid: 5230c382-dcd2-468f-8cb3-2a1acfde2b32
    updateTime: '2021-11-17T17:48:22.171180Z'
    versionRetentionPeriod: 3600s

ที่ไหน

  • earliestVersionTime: การประทับเวลาของข้อมูล PITR ที่จัดเก็บไว้เร็วที่สุด
  • pointInTimeRecoveryEnablement: แสดง POINT_IN_TIME_RECOVERY_ENABLED หากเปิดใช้ PITR หากปิดใช้ PITR คุณจะเห็น POINT_IN_TIME_RECOVERY_DISABLED หรือช่อง pointInTimeRecoveryEnablement อาจไม่แสดง
  • versionRetentionPeriod: ระยะเวลาที่เก็บรักษาข้อมูล PITR ไว้ในหน่วยมิลลิวินาที ค่านี้อาจเป็น 1 ชั่วโมงเมื่อปิดใช้ PITR หรือ 7 วันหากเปิดใช้ PITR

อ่านข้อมูล PITR

คุณสามารถอ่านข้อมูล PITR ได้โดยใช้ไลบรารีของไคลเอ็นต์, เมธอด REST API หรือเครื่องมือเชื่อมต่อ FirestoreIO Apache Beam

ไลบรารีของไคลเอ็นต์

Java

คุณต้องใช้ธุรกรรม ReadOnly เพื่ออ่านข้อมูล PITR คุณไม่สามารถระบุ readTime ในการอ่านโดยตรงได้ ดูข้อมูลเพิ่มเติมได้ที่ธุรกรรมและการเขียนแบบเป็นกลุ่ม

  Firestore firestore = …

  TransactionOptions options =
          TransactionOptions.createReadOnlyOptionsBuilder()
              .setReadTime(
                  com.google.protobuf.Timestamp.newBuilder()
                      .setSeconds(1684098540L)
                      .setNanos(0))
              .build();

  ApiFuture<Void> futureTransaction = firestore.runTransaction(
              transaction -> {
                // Does a snapshot read document lookup
                final DocumentSnapshot documentResult =
                    transaction.get(documentReference).get();

                // Executes a snapshot read query
                final QuerySnapshot queryResult =
                  transaction.get(query).get();
              },
              options);

  // Blocks on transaction to complete
  futureTransaction.get();

โหนด

คุณต้องใช้ธุรกรรม ReadOnly เพื่ออ่านข้อมูล PITR คุณไม่สามารถระบุ readTime ในการอ่านได้โดยตรง ดูข้อมูลเพิ่มเติมได้ที่ธุรกรรมและการเขียนแบบเป็นกลุ่ม

const documentSnapshot = await firestore.runTransaction(
    updateFunction => updateFunction.get(documentRef),
    {readOnly: true, readTime: new Firestore.Timestamp(1684098540, 0)}
);

const querySnapshot = await firestore.runTransaction(
    updateFunction => updateFunction.get(query),
    {readOnly: true, readTime: new Firestore.Timestamp(1684098540, 0)}
);

REST API

การอ่าน PITR รองรับในเมธอดการอ่าน Cloud Firestore ทั้งหมด ซึ่งได้แก่ get, list, batchGet, listCollectionIds, listDocuments, runQuery, runAggregationQuery และ partitionQuery

หากต้องการอ่านโดยใช้เมธอด REST ให้ลองใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  1. ในคำขอเมธอดการอ่าน ให้ส่งค่า readTime เป็นการประทับเวลา PITR ที่รองรับในเมธอด readOptions การประทับเวลา PITR อาจเป็นการประทับเวลาที่มีความแม่นยำระดับไมโครวินาทีภายในชั่วโมงที่ผ่านมา หรือการประทับเวลาแบบเต็มนาทีที่เกินชั่วโมงที่ผ่านมา แต่ต้องไม่เร็วกว่า earliestVersionTime

  2. ใช้พารามิเตอร์ readTime ร่วมกับเมธอด BeginTransaction เป็นส่วนหนึ่งของธุรกรรม ReadOnly สำหรับการอ่าน PITR หลายรายการ

Apache Beam

ใช้เครื่องมือเชื่อมต่อ Cloud FirestoreIO Apache Beam เพื่ออ่านหรือเขียนเอกสารในฐานข้อมูล Cloud Firestore ในวงกว้างด้วย Dataflow

การอ่าน PITR ได้รับการรองรับในวิธีการอ่านต่อไปนี้ของเครื่องมือเชื่อมต่อ Cloud FirestoreIO วิธีการอ่านเหล่านี้รองรับเมธอด withReadTime(@Nullable Instant readTime) ที่คุณใช้สำหรับการอ่าน PITR ได้

Java

ใช้โค้ดต่อไปนี้กับโค้ดไปป์ไลน์ Dataflow ตัวอย่างสำหรับการดำเนินการอ่านหรือเขียนจำนวนมากได้ ตัวอย่างนี้ใช้เมธอด withReadTime(@Nullable Instant readTime) สำหรับการอ่าน PITR

  Instant readTime = Instant.ofEpochSecond(1684098540L);

  PCollection<Document> documents =
      pipeline
          .apply(Create.of(collectionId))
          .apply(
              new FilterDocumentsQuery(
                  firestoreOptions.getProjectId(), firestoreOptions.getDatabaseId()))
          .apply(FirestoreIO.v1().read().runQuery().withReadTime(readTime).withRpcQosOptions(rpcQosOptions).build())
  ...

ดูรายการตัวอย่าง readTime ทั้งหมดในไปป์ไลน์ Dataflow ได้ที่ที่เก็บ GitHub

โคลนจากฐานข้อมูล

คุณสามารถโคลนฐานข้อมูลที่มีอยู่ ณ การประทับเวลาที่เลือกไว้ลงในฐานข้อมูลใหม่ได้โดยทำดังนี้

  • ฐานข้อมูลที่โคลนคือฐานข้อมูลใหม่ที่จะสร้างขึ้นในตำแหน่งเดียวกับฐานข้อมูลต้นทาง

    ในการสร้างโคลน Cloud Firestore จะใช้ข้อมูลการกู้คืนช่วงเวลา (PITR) ของฐานข้อมูลต้นทาง ฐานข้อมูลที่โคลนจะมีข้อมูลและดัชนีทั้งหมด

  • โดยค่าเริ่มต้น ฐานข้อมูลที่โคลนจะได้รับการเข้ารหัสในลักษณะเดียวกับฐานข้อมูลต้นทาง โดยใช้การเข้ารหัสเริ่มต้นของ Google หรือการเข้ารหัส CMEK คุณสามารถระบุประเภทการเข้ารหัสอื่นหรือใช้คีย์อื่นสำหรับการเข้ารหัส CMEK ได้

  • การประทับเวลามีความละเอียด 1 นาทีและระบุจุดเวลาในอดีตในช่วงเวลาที่กำหนดโดยกรอบเวลา PITR ดังนี้

    • หากเปิดใช้ PITR สำหรับฐานข้อมูล คุณจะเลือกนาทีใดก็ได้ในช่วง 7 วันที่ผ่านมา (หรือน้อยกว่านั้นหากเปิดใช้ PITR น้อยกว่า 7 วันที่ผ่านมา)
    • หากไม่ได้เปิดใช้ PITR คุณจะเลือกนาทีใดก็ได้ในชั่วโมงที่ผ่านมา
    • คุณสามารถตรวจสอบการประทับเวลาที่เร็วที่สุดที่เลือกได้ในคำอธิบายของฐานข้อมูล

คอนโซล

คอนโซล Firebase ไม่รองรับการโคลนฐานข้อมูล คุณสามารถใช้คำสั่งสำหรับ Google Cloud CLI เพื่อโคลนฐานข้อมูลได้

gcloud

ใช้คำสั่ง gcloud firestore databases clone เพื่อโคลนฐานข้อมูล

gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

แทนที่ค่าต่อไปนี้

  • SOURCE_DATABASE: ชื่อฐานข้อมูลของฐานข้อมูลที่มีอยู่ซึ่งคุณต้องการโคลน ชื่อจะใช้รูปแบบ projects/PROJECT_ID/databases/SOURCE_DATABASE_ID

  • PITR_TIMESTAMP: การประทับเวลา PITR ในรูปแบบ RFC 3339 ที่ความละเอียดระดับนาที เช่น 2025-06-01T10:20:00.00Z หรือ 2025-06-01T10:30:00.00-07:00

  • DESTINATION_DATABASE_ID: รหัสฐานข้อมูลสำหรับฐานข้อมูลที่โคลนใหม่ รหัสฐานข้อมูลนี้ต้องไม่เชื่อมโยงกับฐานข้อมูลที่มีอยู่

ตัวอย่าง

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'

หากต้องการเชื่อมโยงกับแท็กบางรายการขณะโคลนฐานข้อมูล ให้ใช้คำสั่งก่อนหน้าที่มีแฟล็ก --tags ซึ่งเป็นรายการคู่คีย์-ค่าของแท็กที่ไม่บังคับให้เชื่อมโยง

ตัวอย่าง

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--tags=key1=value1,key2=value2

โดยค่าเริ่มต้น ฐานข้อมูลที่โคลนจะมีการกำหนดค่าการเข้ารหัสเหมือนกับฐานข้อมูลต้นทาง หากต้องการเปลี่ยนการกำหนดค่าการเข้ารหัส ให้ใช้อาร์กิวเมนต์ --encryption-type ดังนี้

  • (ค่าเริ่มต้น) use-source-encryption: ใช้การกำหนดค่าการเข้ารหัสเดียวกันกับฐานข้อมูลต้นทาง
  • google-default-encryption: ใช้การเข้ารหัสเริ่มต้นของ Google
  • customer-managed-encryption: ใช้การเข้ารหัส CMEK ระบุรหัสคีย์ในอาร์กิวเมนต์ --kms-key-name

ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าการเข้ารหัส CMEK สำหรับฐานข้อมูลที่โคลน

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

Firebase CLI

ใช้คำสั่ง firebase firestore:databases:clone เพื่อโคลนฐานข้อมูล

firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP'

แทนที่ค่าต่อไปนี้

  • SOURCE_DATABASE: ชื่อฐานข้อมูลของฐานข้อมูลที่มีอยู่ซึ่งคุณต้องการโคลน ชื่อจะใช้รูปแบบ projects/PROJECT_ID/databases/SOURCE_DATABASE_ID

  • DESTINATION_DATABASE: ชื่อฐานข้อมูลสำหรับฐานข้อมูลที่โคลนใหม่ ชื่อจะใช้รูปแบบ projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID ชื่อฐานข้อมูลนี้ต้องไม่เชื่อมโยงกับฐานข้อมูลที่มีอยู่

  • PITR_TIMESTAMP: การประทับเวลา PITR ในรูปแบบ RFC 3339 ที่ความละเอียดระดับนาที เช่น 2025-06-01T10:20:00.00Z หรือ 2025-06-01T10:30:00.00-07:00 หากไม่ได้ระบุ สแนปชอตที่เลือกจะเป็นเวลาปัจจุบัน โดยปัดเศษลงเป็นนาที

โดยค่าเริ่มต้น ฐานข้อมูลที่โคลนจะมีการกำหนดค่าการเข้ารหัสเหมือนกับฐานข้อมูลต้นทาง หากต้องการเปลี่ยนการกำหนดค่าการเข้ารหัส ให้ใช้อาร์กิวเมนต์ --encryption-type ดังนี้

  • (ค่าเริ่มต้น) USE_SOURCE_ENCRYPTION: ใช้การกำหนดค่าการเข้ารหัสเดียวกันกับฐานข้อมูลต้นทาง
  • GOOGLE_DEFAULT_ENCRYPTION: ใช้การเข้ารหัสเริ่มต้นของ Google
  • CUSTOMER_MANAGED_ENCRYPTION: ใช้การเข้ารหัส CMEK ระบุรหัสคีย์ในอาร์กิวเมนต์ --kms-key-name

ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าการเข้ารหัส CMEK สำหรับฐานข้อมูลที่โคลน

firebase firestore:databases:clone \
'projects/example-project/databases/(default)' \
'projects/example-project/databases/example-dest-db' \
--snapshot-time 'PITR_TIMESTAMP' \
--encryption-type CUSTOMER_MANAGED_ENCRYPTION

ข้อจำกัด

การดำเนินการโคลนจะไม่โคลนข้อมูลการค้นหา App Engine หรือเอนทิตี BLOB จากฐานข้อมูล (default) ข้อมูลนี้ใช้ได้กับฐานข้อมูล (default) เท่านั้น และจะไม่มีประโยชน์หากคุณโคลนจาก (default) ไปยังฐานข้อมูลที่ไม่รองรับข้อมูลดังกล่าว จึงไม่รวมอยู่ในการโคลน

ส่งออกและนำเข้าจากข้อมูล PITR

คุณสามารถส่งออกฐานข้อมูลไปยัง Cloud Storage จากข้อมูล PITR โดยใช้คำสั่ง gcloud firestore export คุณสามารถส่งออกข้อมูล PITR ที่มีการประทับเวลาเป็นนาทีเต็มภายใน 7 วันที่ผ่านมา แต่ต้องไม่ก่อนวันที่ earliestVersionTime หากไม่มีข้อมูลในการประทับเวลาที่ระบุอีกต่อไป การดำเนินการส่งออกจะล้มเหลว

การดำเนินการส่งออก PITR รองรับตัวกรองทั้งหมด รวมถึงการส่งออกเอกสารทั้งหมดและการส่งออกคอลเล็กชันที่เฉพาะเจาะจง

  1. ส่งออกฐานข้อมูล โดยระบุพารามิเตอร์ snapshot-time เป็นการประทับเวลาการกู้คืนที่เลือก

    gcloud

    เรียกใช้คำสั่งต่อไปนี้เพื่อส่งออกฐานข้อมูลไปยังที่เก็บข้อมูล

    gcloud firestore export gs://BUCKET_NAME_PATH \
        --snapshot-time=PITR_TIMESTAMP \
        --collection-ids=COLLECTION_IDS \
        --namespace-ids=NAMESPACE_IDS
    

    ที่ไหน

    • BUCKET_NAME_PATH - บัケット Cloud Storage ที่ถูกต้องซึ่งมีคำนำหน้าเส้นทาง (ไม่บังคับ) ที่ใช้จัดเก็บไฟล์ที่ส่งออก
    • PITR_TIMESTAMP - การประทับเวลา PITR ที่รายละเอียดระดับนาที เช่น 2023-05-26T10:20:00.00Z หรือ 2023-10-19T10:30:00.00-07:00
    • COLLECTION_IDS - รายการรหัสคอลเล็กชันหรือรหัสกลุ่มคอลเล็กชัน เช่น 'specific-collection-group1','specific-collection-group2'
    • NAMESPACE_IDS - รายการรหัสเนมสเปซ เช่น 'customer','orders'

    โปรดทราบประเด็นต่อไปนี้ก่อนส่งออกข้อมูล PITR

    • ระบุการประทับเวลาในรูปแบบ RFC 3339 เช่น 2023-05-26T10:20:00.00Z หรือ 2023-10-19T10:30:00.00-07:00
    • ตรวจสอบว่าการประทับเวลาที่คุณระบุเป็นการประทับเวลาแบบเต็มนาทีภายใน 7 วันที่ผ่านมา แต่ไม่เกิน earliestVersionTime หากไม่มีข้อมูลอยู่ในการประทับเวลาที่ระบุ ระบบจะสร้างข้อผิดพลาดขึ้น การประทับเวลาต้องเป็นนาทีเต็ม แม้ว่าเวลาที่ระบุจะอยู่ภายในชั่วโมงที่ผ่านมาก็ตาม
    • ระบบจะไม่เรียกเก็บเงินสำหรับการส่งออก PITR ที่ไม่สำเร็จ
  2. นำเข้าไปยังฐานข้อมูล

    ใช้ขั้นตอนในหัวข้อนำเข้าเอกสารทั้งหมดเพื่อนำเข้าฐานข้อมูลที่ส่งออก หากมีเอกสารอยู่ในฐานข้อมูลอยู่แล้ว ระบบจะเขียนทับเอกสารนั้น