รันคำสั่ง insert ลง D1 SQL Database จำนวนมาก โดยใช้ wrangler cli
หากเราต้องการรันคำสั่ง Insert จำนวนมาก ๆ ลงใน D1 SQL Database เราสามารถใช้ wrangler cli ได้ ไปดูวิธีกันครับ
โดยจะมี syntax ดังนี้
npx wrangler d1 execute [database name] --config wrangler.toml --file=[filename.sql]
จำตัวอย่าง syntax เราต้องมี database name ที่เราต้องการ แล้วเราก็ต้องมีไฟล์ .sql คำสั่ง insert into... แล้วก็มีไฟล์ config wrangler.toml
เราไปดูตัวอย่างไฟล์ config wrangler.toml กันครับ
[[d1_databases]]
binding = "DB"
database_name = "doesystem-db"
database_id = "xxxxx"
preview_database_id = "xxxxxx"
จากตัวอย่างในไฟล์ config wrangler.toml เราต้อง map database ไว้
จากนั้นเราไปรันคำสั่งได้เลยคับ ตัวอย่างคำสั่ง
npx wrangler d1 execute doesystem-db --config wrangler.toml --file=sql_insert.sql
ตอนเรารันคำสั่ง ถ้ามีคำสั่งมากกว่า 10,000 cli จะแยกไว้เป็น bath แล้วรันทีละ 10,000 คำสั่ง
ตัวอย่างถ้าเรามีคำสั่ง insert 20,000 คำสั่ง wrangler cli จะทำการแยกรันทีละ 10,000 คำสั่ง ถ้า 10,000 คำสั่งแรกสำเร็จก็จำทำการรัน 10,000 ถัดไป ถ้าเกิดว่าใน 10,000 ที่สองมี error ตัว wrangler cli จะทำการ rollback คำสั่ง 10,000 ที่สองทั้งหมด แต่คำสั่ง 10,000 แรกจะ commit ไปแล้ว