Bạn có thể sử dụng câu lệnh nào để tải dữ liệu từ tệp vào bảng mysql?
Bài viết này sẽ chứng minh sự khác biệt giữa LOAD DATA INFILE và INSERT và giải thích khi nào bạn nên sử dụng cả hai để nhập dữ liệu trong MySQL Show
một năm trước • 5 phút đọc Bởi Lukas VileikisMục lục Giới thiệuNếu bạn đã làm việc với MySQL một thời gian, có thể bạn đã biết rằng MySQL cung cấp nhiều phương thức để nhập dữ liệu. Một trong số đó – câu lệnh 3 – có thể được coi là một cách tiêu chuẩn để làm như vậy. Tuy nhiên, MySQL cũng có một cách khác để nhập các kết xuất – 4. Một tuyên bố như vậy có thể hữu ích nếu chúng ta thấy mình đang làm việc với nhiều dữ liệu bên trong các phiên bản cơ sở dữ liệu của mình. Tuy nhiên, khi đứng trước hai lựa chọn đó, có lẽ chúng ta không chắc cái nào tốt hơn – đó là điều chúng ta đang tìm hiểu ngày nayCHÈN dữ liệuĐể bắt đầu, câu lệnh 0, như tên gọi của nó, cho phép chúng ta chèn dữ liệu vào một bảng. Ở dạng cơ bản nhất, câu lệnh trông giống như vậy 1Như bạn có thể thấy, tuyên bố bao gồm một vài phần
CHÈN các ví dụSau khi chúng tôi chạy một câu lệnh SQL như vậy, một số dữ liệu demo sẽ được thêm vào bảng của chúng tôi. Chúng tôi cũng có thể chạy các câu lệnh 0 như vậy 1Trong trường hợp này, giá trị của 22 sẽ được chèn vào cột có tên là 23 và giá trị của 24 sẽ được chèn vào 25Ngoài ra, hãy nhớ rằng khi thêm giá trị cho mỗi cột trong bảng, chúng ta không cần chỉ định cột
Nó sẽ hoạt động giống như một ví dụ trước đó Ngoài ra, chúng tôi có thể sử dụng cách chèn nhiều hàng cùng một lúc, một truy vấn như vậy 2Nó cũng sẽ thực hiện hoàn hảo. Ưu điểm của điều này là chúng tôi cũng giảm các cuộc gọi đến chính cơ sở dữ liệu Khi INSERT không hoạt độngTuy nhiên, truy vấn 0 cũng đi kèm với một số cảnh báo. dữ liệu chèn vào bảng phải phù hợp với kiểu dữ liệu của cột được đặt trong bảng. Điều đó có nghĩa là nếu, ví dụ, chúng ta sẽ chạy một truy vấn như vậy 9Trường hợp 27 thuộc loại 28, MySQL sẽ không thực hiện truy vấn và thay vào đó sẽ trả về lỗi như vậy 29Lỗi này khá dễ hiểu. cột 27 chấp nhận số chứ không phải giá trị văn bản. chúng tôi đã cho nó ăn thứ khác và MySQL không thích nóNhập một lượng lớn dữ liệuViệc chèn dữ liệu vào các phiên bản MySQL của bạn sẽ giúp bạn đi khá xa. Tuy nhiên, tại một số thời điểm trong sự nghiệp của bạn với tư cách là một DBA MySQL, bạn có thể cần xem xét các câu lệnh 0 và nhập một lượng dữ liệu khá lớn (dữ liệu bao gồm 100.000 hàng trở lên) vào các phiên bản cơ sở dữ liệu của bạn. Một vài dự án dựa trên dữ liệu lớn có thể sử dụng tính năng này (ví dụ: bạn có biết rằng một trong những công cụ tìm kiếm vi phạm dữ liệu quan trọng nhất trên thế giới được xây dựng trên MySQL không?). Tuy nhiên, để hiểu đầy đủ về nó, chúng ta phải nhận ra các lựa chọn của mìnhSử dụng LOAD DATA INFILEĐể nhập một lượng lớn dữ liệu vào MySQL, chúng ta có thể sử dụng kỹ thuật chèn nhiều hàng (đã nêu ở trên) hoặc sử dụng 4 thay thế. Như tên cho thấy, 4 tải dữ liệu vào một bảng từ một tệp. Cú pháp cơ bản của truy vấn 4 trông giống như vậy 5Trong đó 95 mô tả đường dẫn đến tệp mà chúng tôi muốn tải dữ liệu từ đó và 5 đại diện cho tên của bảng 4 cũng có các tùy chọn khác có thể được chỉ định. Ví dụ: chúng ta cũng có thể chỉ định các cột mà chúng ta muốn tải dữ liệu vào ở cuối câu lệnh 8BỎ QUA là gì?Một câu lệnh như trên sẽ chỉ chèn dữ liệu vào một cột có tên là 98. Chúng tôi cũng có thể chỉ định một từ khóa 99 nếu chúng tôi mong muốn 1Câu lệnh này sẽ giải quyết bất kỳ lỗi nào mà nó gặp phải và tải dữ liệu bất kể. Câu lệnh 99 cũng có thể được sử dụng kết hợp với các cột cụ thể 4Tuyên bố này rất mạnh mẽ vì một lý do đơn giản. nếu tập dữ liệu đã cho của chúng tôi rất lớn và chúng tôi thậm chí không cần một nửa thông tin trong đó (giả sử, chúng tôi chỉ cần các giá trị của cột đầu tiên chứ không cần giá trị của cột thứ hai, thứ ba, v.v. ), câu lệnh này sẽ thuận tiện "quên" tải dữ liệu vào các cột đó và bỏ qua mọi lỗi mà MySQL có thể gặp phải trên đường đi. Nói về tiết kiệm thời gian Ngoài ra, hãy nhớ rằng 4 cũng có thể là 53 nghĩa là bạn cũng có thể nhanh chóng thực hiện một truy vấn như 54. điều đó cũng sẽ hiệu quả. Câu lệnh 53 thay đổi vị trí mà MySQL có thể mong đợi dữ liệu. nếu câu lệnh 53 đang được sử dụng, MySQL sẽ mong đợi dữ liệu được đặt ở đâu đó trên máy khách; Tại sao LOAD DATA INFILE quá nhanh?Khi làm việc với MySQL và so sánh thời gian nhập giữa các câu lệnh 3 và 4 trong MySQL, bạn có thể nhận thấy rằng câu lệnh 4 tải dữ liệu vào cơ sở dữ liệu nhanh hơn rất nhiều so với 0. Lý do tại sao khá đơn giản. 4 làm phiền MySQL ít hơn 0 câu lệnh. ví dụ: câu lệnh 4 có thể bỏ qua các dòng, cột hoặc nếu chúng ta muốn, chỉ tải dữ liệu vào các cột cụ thể, bỏ qua tất cả các cột khác (tham khảo ví dụ trên. ) Câu lệnh 0 không cung cấp các tính năng như vậy; . Tuy nhiên, điều đó không có nghĩa là 4 không có khuyết điểm; . để tránh điều đó, bạn có thể muốn chia nhỏ các tệp bạn sử dụng để tải dữ liệu vào cơ sở dữ liệu và thay vì tải dữ liệu với 100 hoặc 200 triệu hàng cùng một lúc, hãy tải dữ liệu đó thành các phần nhỏ hơn. ví dụ: có mười tệp với 10 triệu hàng mỗi tệp, lấy các câu lệnh 4 của bạn từ một vòng lặp và chạy từng tệp một. Bạn đã hoàn tấtSửa đổi dữ liệu với ArctypeNếu bạn thường thấy mình đang 0 dữ liệu vào MySQL, rất có thể bạn đang sử dụng một trình soạn thảo. Trình soạn thảo SQL như Arctype sẽ cho phép bạn tạo và chỉnh sửa bảng một cách dễ dàng. Nó cũng sẽ cho phép bạn chia sẻ các truy vấn với nhóm của mình – tất cả đều có hiệu suất cực nhanh. Nếu bạn cần một trình soạn thảo SQL, hãy dùng thử Arctype. Ví dụ: đây là quy trình chỉnh sửa bảng có thể trông như thế nào khi sử dụng ArctypeChỉnh sửa bảng với ArctypeVà đó thậm chí không phải là nó. Nếu bạn muốn, bạn cũng có thể chỉnh sửa các ràng buộc hoặc khóa ngoại. tất cả mà không phải lo lắng về việc chạy các truy vấn sửa đổi chúng cho bạn Sửa đổi các ràng buộc với ArctypeNếu bạn thấy mình là người thường xuyên đọc blog Arctype, có lẽ bạn đã nhận thấy rằng blog này đề cập đến rất nhiều chủ đề khác nhau, từ các giao dịch trong PostgreSQL đến việc tạo ra dữ liệu lớn với MySQL. Nếu bạn thích các chủ đề này, hãy nhớ theo dõi một lúc. chúng tôi có nhiều thứ khác sắp tới Câu lệnh nào có thể sử dụng để tải dữ liệu từ tệp vào bảng?Câu lệnh LOAD DATA đọc các hàng từ tệp văn bản vào bảng với tốc độ rất cao. Tệp có thể được đọc từ máy chủ lưu trữ hoặc máy khách lưu trữ, tùy thuộc vào việc công cụ sửa đổi ĐỊA PHƯƠNG có được cung cấp hay không.
Bạn có thể sử dụng câu lệnh nào để tải dữ liệu từ tệp vào bảng trong phần tiếp theo của tôi?Sử dụng câu lệnh LOAD DATA, bạn có thể chèn nội dung của tệp (từ máy chủ hoặc máy chủ lưu trữ) vào bảng MySQL. Nếu bạn sử dụng mệnh đề ĐỊA PHƯƠNG, bạn có thể tải nội dung tệp cục bộ int lên một bảng |