Tệp .csv từ Excel so với tệp .csv từ Libre Office


1

Tôi đã tạo một tệp .csv đơn giản với Excel trông như thế này: nhập mô tả hình ảnh ở đây

Tôi cũng đã tạo tệp .csv tương tự bằng cách sử dụng Libre Office.

Cả hai tệp .csv đều trông hoàn toàn giống nhau tại TextEdit:

id, questions
1, Hello World

Tuy nhiên, khi tôi cố gắng nhập chúng vào cơ sở dữ liệu MySQL tại PhpMyAdmin thì một số điều đáng ngạc nhiên đang xảy ra. Các tập tin sau được nhập đúng vào cơ sở dữ liệu. Nhưng khi tôi cố gắng nhập tệp cũ vào nó thì tôi gặp lỗi sau:

Error
Static analysis:

5 errors were found during analysis.

A symbol name was expected! A reserved keyword can not be used as a column name without backquotes. (near "int" at position 46)
At least one column definition was expected. (near "int" at position 46)
Unexpected beginning of statement. (near "1" at position 50)
Unexpected beginning of statement. (near "`question`" at position 54)
Unrecognized statement type. (near "varchar" at position 65)
SQL query:

CREATE TABLE IF NOT EXISTS `Sample`.`TABLE 3` ( int(1), `question` varchar(5), `keywords` varchar(5), `answer` varchar(5)) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'int(1), `question` varchar(5), `keywords` varchar(5), `answer` varchar(5)) DEFAU' at line 1

Nếu tôi hiểu đúng, lỗi này xảy ra do tên của cột đầu tiên trong tệp .csv là idtừ dành riêng cho cơ sở dữ liệu. Tuy nhiên, lỗi này hoàn toàn không xảy ra trong trường hợp tệp .csv được tạo trong Libre Office.

Tại sao chuyện này đang xảy ra?


1
Bạn có thể cần so sánh các tệp của mình với trình soạn thảo hex để hiểu sự khác biệt. Trình chỉnh sửa văn bản không tốt để hiển thị các ký tự không in.
Máté Juhász

Câu trả lời:


1

Ý tưởng @Máté Juhászliên quan đến trình soạn thảo hex là khá tốt.

Tệp .csv từ Excel hiển thị nội dung sau tại trình soạn thảo hex:

Ôªøid,name
1,hello

trong khi tệp .csv từ Libre Office hiển thị như sau:

id,name
1,Hello

Rõ ràng, tôi có thể sử dụng Libre Office cho nhiệm vụ này như tôi vẫn luôn làm cho đến nay; Tôi chỉ đơn giản muốn hai tận dụng các hàm hữu ích trong Excel.

Tuy nhiên, cuối cùng, tôi đã nhận ra rằng tôi đã nhận được "lỗi" này trong mã hóa .csv mặc định của Excel CSV UTF-8 (Comma delimited) (.csv) nhưng tôi không nhận được nếu tôi đổi sang Comma-Separated Values (.csv)mã hóa.

Cuối cùng, hãy để tôi lưu ý rằng tôi đồng ý với @Pimp Juice ITđiều đó theo cách tệp .csv từ Excel được mã hóa giống như quên đặt tên của cột đầu tiên của bảng trong cơ sở dữ liệu. Nhưng tôi muốn tìm một lời giải thích tại sao điều này xảy ra ở cấp độ Excel.


Tôi thấy câu lệnh SQL được tạo như một phần của quy trình và không phải là thứ bạn chỉ định thủ công. Thú vị ....
Pimp Juice IT

Có, tôi chỉ cần nhập các tệp .csv vào cơ sở dữ liệu. Tôi không viết bất kỳ truy vấn bằng tay. Nhưng cảm ơn ý tưởng của bạn. :)
Poete Maudit

Dấu thứ tự Byte (BOM) thường được thêm vào phần đầu của tệp Unicode và nó hiển thị dưới dạng ba ký tự khi được xem là UTF-8. Rõ ràng, MySQL mong đợi mã hóa phi Unicode.
Jim K

Vâng, đây là cách nó trông giống như @JimK.
Poete Maudit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.