🗂

d1にインポートするときはBIGIN TRANSACTION とCOMMIT;を削除する

2024/05/29に公開

はじめに

d1にローカルのデータをインポートするために、
sqliteファイルから.sqlファイルを作ってインポートで困ったので残します。

.sqlファイルを作成する

terminal
sqlite3 db.sqlite .dump > db.sql

BEGIN TRANSACTIONとCOMMIT;を削除しなければいけない

作ったファイルをそのまま実行してはいけません。
ファイルからBEGIN TRANSACTIONとCOMMIT;を削除します。

db.sql
- BEGIN TRANSACTION;
....

- COMMIT;

本番に実行

teminal
npx wrangler d1 execute d1-database --remote --file=./db.sql

おわりに

ドキュメントは読みましょうという自戒
sqliteとd1は互換がない部分もいくつかあるため知っておかないといけないと思いました。

参考

https://developers.cloudflare.com/d1/build-with-d1/import-data/#convert-sqlite-database-files

Discussion