Có thể lấy tệp csv được lưu trữ trong thư mục res/raw resource và sử dụng nó để điền bảng trong cơ sở dữ liệu sqlite3 không? Tôi nghĩ rằng, nếu có một cách để thực hiện nhập khẩu số lượng lớn cho toàn bộ tệp vào bảng thì nó sẽ sạch hơn và nhanh hơn lặp lại trên mỗi dòng trong tệp và thực hiện các câu lệnh chèn riêng lẻ ...Điền vào cơ sở dữ liệu Android Từ tệp CSV?
tôi đã phát hiện ra rằng có một lệnh nhập khẩu sqlite cho phép này: How to import load a .sql or .csv file into SQLite?
... nhưng tôi đang gặp rắc rối áp dụng các báo cáo trong ứng dụng Android của tôi. Ý nghĩ đầu tiên của tôi là thử một số thứ như sau ... nhưng không may mắn:
db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT)");
db.execSQL(".mode csv");
db.execSQL(".import res/raw/MyFile.csv " + TABLE_NAME);
Điều này có thể?
Tôi có nên thử cách tiếp cận khác để điền cơ sở dữ liệu của mình không?
CẬP NHẬT: Tôi đánh dấu phản ứng của Josef là câu trả lời (chèn hàng loạt bằng giao dịch) vì nó hoạt động tốt và trả lời trực tiếp câu hỏi của tôi dựa trên tiêu đề của tôi (cảm ơn Josef). Tuy nhiên, tôi vẫn đang tìm cách chèn hàng loạt trong ứng dụng Android từ tệp csv vào bảng sqlite3 bằng cách sử dụng câu lệnh nhập. Nếu bạn biết làm thế nào để làm điều này xin vui lòng trả lời.
Cảm ơn câu trả lời của bạn!
Cảm ơn bạn đã trả lời Josef, tôi đã cố gắng gửi tệp sqlite3 .db trong thư mục nội dung của tệp .apk (như bản phác thảo bài đăng reigndesign). Vấn đề tôi gặp phải với giải pháp thiết kế lại là onUpgrade() không được gọi khi phiên bản cơ sở dữ liệu của tôi # thay đổi.Trong thực tế, cách duy nhất tôi có thể làm cho nó thay thế cơ sở dữ liệu hiện có bằng một phiên bản mới hơn là làm việc xung quanh onUpgrade() và thêm một câu lệnh xóa cơ sở dữ liệu ngay trước khi createDataBase() gọi cơ bản tạo lại cơ sở dữ liệu mỗi khi Activity chạy ... = ( – MoMo
Đối với việc sử dụng các giao dịch có thể là giải pháp khả thi.Tôi có thể nhận được onUpgrad() để gọi tính nhất quán khi triển khai giải pháp này (http: // www .screaming-penguin.com/node/7742) nhưng một câu lệnh nhập sql đơn giản vẫn lý tưởng xem xét việc nâng cấp và tinh chỉnh cần thiết để có giải pháp reigndesign để làm việc (tức là cột '_id' và bảng 'android_metadata'). tinh chỉnh không khó thực hiện Tôi sợ nó thêm phụ thuộc không cần thiết vào nền tảng Android mong đợi cơ sở dữ liệu của họ được tạo ra như thế nào.Nếu có thay đổi để giải pháp của chúng tôi ... – MoMo
Vận chuyển với một tệp sqlite3 được dựng sẵn e là KHÔNG thực hành tốt. Các nhà sản xuất có thể thực hiện/sử dụng bất kỳ công nghệ nào họ muốn theo mui xe nhưng phải tuân thủ các giao diện sqlite3 - vì vậy, sqlite3 dựng sẵn của bạn có thể không hoạt động trên một số thiết bị. Vì vậy, thực hành tốt nhất/an toàn nhất là luôn để thiết bị của bạn tạo cơ sở dữ liệu, sau đó nhập số lượng lớn vào cơ sở dữ liệu đó. – straya