Cách nhập tệp excel vào cơ sở dữ liệu MySQL


87

Có ai có thể giải thích cách nhập tệp Microsoft Excel vào cơ sở dữ liệu MySQL không?

Ví dụ, bảng Excel của tôi trông như thế này:

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

[Bạn có thể xem qua chủ đề này] [1] trên diễn đàn MySQL. Nó giải thích cách làm chính xác những gì bạn muốn. [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns

1
Tiện ích miễn phí này làm cho việc nhập khẩu các bảng tính excel vào các bảng mysql nhanh chóng và dễ dàng panofish.net/...
panofish

+1 cho một ý tưởng mới và khác biệt. Quá trình xử lý cực kỳ chậm, trước tiên nó đọc từng hàng trong tệp và sau đó tải lên bất kỳ thứ gì. Phải mất khoảng 15 phút để nhập 5.2K hàng
Fr0zenFyr

Đối với một số bảng tính, nó có thể chậm do số lượng cột và hàng. Tuy nhiên, tôi đổ lỗi cho thư viện com-object của microsofts là thứ được sử dụng để đọc bảng tính. Chương trình của tôi đọc bảng tính nhanh như thư viện cho phép. Việc chèn mysql rất nhanh. Nếu bạn có thể loại bỏ các cột không cần thiết trước khi nhập ... điều đó có thể giúp ích.
panofish

Tôi có 14 cột trên 5173 hàng. Tôi đã chọn tất cả các cột / hàng trống và xóa chúng để tránh xử lý không cần thiết. Sytem mà tôi đang sử dụng có RAM 2,5G và bộ xử lý core2duo, không có nhiều quy trình đang chạy, tab hiệu suất cho thấy mức sử dụng 65% và rất nhiều RAM vẫn chưa được sử dụng. Vì vậy, tôi đoán tôi sẽ không đổ lỗi cho phần cứng nhưng như bạn đã nói, các đối tượng MS com tệ hại .. Tôi không biết khi nào MS sẽ ngừng xây dựng những thứ tào lao trông giống như những vật cứu rỗi cho người mới. Tôi chán ngấy việc làm thêm những thứ tào lao cho các sản phẩm MS.
Fr0zenFyr

Câu trả lời:


46
  1. Xuất nó thành một số định dạng văn bản. Dễ dàng nhất có lẽ sẽ là phiên bản được phân tách bằng tab, nhưng CSV cũng có thể hoạt động.

  2. Sử dụng khả năng tải dữ liệu. Xem http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Nhìn xuống một nửa trang, vì nó sẽ cung cấp một ví dụ điển hình cho dữ liệu được phân tách bằng tab:

    CÁC LĨNH VỰC ĐƯỢC CHẤM DỨT BỞI '\ t' ĐƯỢC CHỨNG MINH BỞI '' ĐÃ BỊ XÓA BỞI '\'

  4. Kiểm tra dữ liệu của bạn. Đôi khi việc trích dẫn hoặc thoát có vấn đề và bạn cần điều chỉnh nguồn, lệnh nhập của mình-- hoặc có thể dễ dàng hơn trong việc xử lý hậu kỳ thông qua SQL.


2
Khi xuất sang CSV, [ít nhất] excel 2013 tích cực cố gắng kiểm soát dữ liệu bằng cách sử dụng dấu ngoặc kép thoát VBA, sử dụng dấu phân tách thập phân phụ thuộc vào ngôn ngữ (dựa trên cài đặt vùng của hệ điều hành) cho 0 giá trị (ví dụ: ',', trong khi sử dụng 'như được xác định trong dấu phân tách thuộc tính ô cho tất cả các giá trị khác. Tốt nhất nên tránh xa CSV.
afk5phút 12/04

1
Lưu ý rằng quy trình này yêu cầu trước tiên bạn phải tạo bảng với các trường thích hợp.
LarsH

Đó không phải là vấn đề duy nhất. Tôi không chắc liệu thủ tục này có xử lý đúng với ký tự xuống dòng bên trong một ô trong excel hay không. Ngay cả việc nhập từ csv sang excel cũng không thành công
Raul Luna

1
@ afk5min bạn hiểu "dữ liệu độc" là sao ??? Tất cả những thẻ và đánh dấu rất hữu ích cho người sử dụng mà sẽ rõ ràng nhập khẩu đó vào sản phẩm MS khác ...
Mindwin

1
* Ý của bạn là "Con đường khó nhất" không phải là dễ nhất
Revious

102

Có một công cụ trực tuyến đơn giản có thể thực hiện việc này được gọi là sqlizer.io .

Ảnh chụp màn hình từ sqlizer.com

Bạn tải tệp XLSX lên đó, nhập tên trang tính và phạm vi ô, và nó sẽ tạo câu lệnh CREATE TABLE và một loạt câu lệnh INSERT để nhập tất cả dữ liệu của bạn vào cơ sở dữ liệu MySQL.

(Tuyên bố từ chối trách nhiệm: Tôi giúp chạy SQLizer)


22
Thật tốt khi biết công cụ này tồn tại, nhưng chắc chắn hãy nghĩ xem bạn có nên sử dụng nó hay không. Nếu bảng tính của bạn chứa dữ liệu nhạy cảm (ví dụ: email người dùng, mật khẩu, thông tin cc, thông tin y tế, v.v.) thì đó có thể không phải là ý kiến ​​hay. Trang web này có thể không lưu trữ dữ liệu của bạn và nó có thể an toàn, nhưng không có cách nào để bạn biết chắc chắn điều đó.
Chris Schmitz

1
@DivyeshJesadiya Miễn phí cho bất kỳ thứ gì lên đến 5000 hàng. Sau đó, bạn phải trả $ 10 cho một tháng sử dụng.
d4nt

@doxsi nó có vẻ ổn với tôi, bạn đã gặp vấn đề gì với nó?
d4nt

@ChrisSchmitz chúng tôi cực kỳ thận trọng với an ninh và đã viết một bài đăng blog gần đây về cách chúng tôi hoạt động SQLizer blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan

Nó hoạt động, hãy chú ý ở định dạng Excel, xlt không được chấp nhận trong khi xls được chấp nhận.
Emanuel Pirovano

40

Dưới đây là một phương pháp khác để nhập dữ liệu bảng tính vào cơ sở dữ liệu MySQL mà không dựa vào bất kỳ phần mềm bổ sung nào. Giả sử bạn muốn nhập bảng Excel của mình vào salesbảng của cơ sở dữ liệu MySQL có tên mydatabase.

  1. Chọn các ô có liên quan:

    nhập mô tả hình ảnh ở đây

  2. Dán vào Mr. Data Converter và chọn đầu ra là MySQL:

    nhập mô tả hình ảnh ở đây

  3. Thay đổi tên bảng và định nghĩa cột để phù hợp với yêu cầu của bạn trong đầu ra đã tạo:

CREATE TABLE sales (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Country VARCHAR(255),
  Amount INT,
  Qty FLOAT
);
INSERT INTO sales
  (Country,Amount,Qty)
VALUES
  ('America',93,0.60),
  ('Greece',9377,0.80),
  ('Australia',9375,0.80);
  1. Nếu bạn đang sử dụng MySQL Workbench hoặc đã đăng nhập mysqltừ dòng lệnh, thì bạn có thể thực thi trực tiếp các câu lệnh SQL được tạo từ bước 3. Nếu không, hãy dán mã vào tệp văn bản (ví dụ import.sql:) và thực thi lệnh này từ trình bao Unix:

    mysql mydatabase < import.sql

    Các cách khác để nhập từ tệp SQL có thể được tìm thấy trong câu trả lời Stack Overflow này .


1
Đây là cách dễ nhất. Cảm ơn! Chỉ cần nhớ xóa 'ID' Khóa chính bổ sung trong SQL và đặt số tăng TỰ ĐỘNG theo lựa chọn của bạn.
Fandango68,

29

Trên thực tế, có một số cách để nhập tệp excel vào cơ sở dữ liệu MySQL với mức độ phức tạp và thành công khác nhau.

  1. Excel2MySQL . Bàn tay xuống, cách dễ nhất và nhanh nhất để nhập dữ liệu Excel vào MySQL. Nó hỗ trợ tất cả các xác minh của Excel và không yêu cầu cài đặt Office.

    ảnh chụp màn hình Excel2MySQL

  2. LOAD DATA INFILE : Tùy chọn phổ biến này có lẽ là kỹ thuật nhất và yêu cầu một số hiểu biết về thực thi lệnh MySQL. Bạn phải tạo bảng của mình theo cách thủ công trước khi tải và sử dụng các loại trường VARCHAR có kích thước thích hợp. Do đó, các kiểu dữ liệu trường của bạn không được tối ưu hóa. LOAD DATA INFILE gặp sự cố khi nhập các tệp lớn vượt quá kích thước 'max_allowed_packet'. Cần chú ý đặc biệt để tránh các vấn đề khi nhập ký tự đặc biệt và ký tự unicode ngoại lai. Đây là một ví dụ gần đây tôi đã sử dụng để nhập tệp csv có tên test.csv.

    nhập mô tả hình ảnh ở đây

  3. phpMyAdmin : Chọn cơ sở dữ liệu của bạn trước, sau đó chọn tab Nhập. phpMyAdmin sẽ tự động tạo bảng và định kích thước các trường VARCHAR của bạn, nhưng nó sẽ không tối ưu hóa các loại trường. phpMyAdmin gặp sự cố khi nhập các tệp lớn vượt quá kích thước 'max_allowed_packet'.

    nhập mô tả hình ảnh ở đây

  4. MySQL cho Excel : Đây là một Phần bổ trợ Excel miễn phí của Oracle. Tùy chọn này hơi tẻ nhạt vì nó sử dụng trình hướng dẫn và quá trình nhập chậm và có lỗi với các tệp lớn, nhưng đây có thể là một lựa chọn tốt cho các tệp nhỏ có dữ liệu VARCHAR. Các trường không được tối ưu hóa.

    nhập mô tả hình ảnh ở đây


Xin chào @panofish, tôi có một excel được cập nhật hàng ngày. Tôi chỉ muốn đưa dữ liệu cập nhật vào bảng cơ sở dữ liệu mysql chứ không phải toàn bộ bảng. (tức là) đặt một hàng vào bảng mỗi ngày. Điều này có thể giải quyết như thế nào?
Arun Raja

Tất cả các giải pháp này đều tập trung vào việc tải toàn bộ bảng tính và thay thế bảng MySQL của bạn hoặc thêm vào bảng. Những thay đổi là thêm bản ghi mới hay thay đổi bản ghi hiện có?
panofish

Chúng chỉ đang ghi đè các giá trị. Nhưng tôi chỉ muốn những giá trị đó được thêm vào mà chưa có trong cơ sở dữ liệu dựa trên ngày tháng. Điều này có thể tăng hiệu suất bằng cách chỉ thêm một số hàng thay vì thêm nhiều hàng hàng ngày.
Arun Raja

2
Excel2MySQL công cụ nên có khả năng chỉ tạo ra các kịch bản cơ sở dữ liệu :(
joseantgv

PHPMyAdmin là dễ nhất và nhanh nhất.
Amir Hajiha

2

Không chắc bạn có tất cả thiết lập này hay không, nhưng đối với tôi, tôi đang sử dụng PHP và MYSQL. Vì vậy, tôi sử dụng PHPExcel một lớp PHP. Thao tác này lấy một tệp ở gần như mọi định dạng, xls, xlsx, cvs, ... và sau đó cho phép bạn đọc và / hoặc chèn.

Vì vậy, những gì tôi kết thúc là tải excel vào một đối tượng phpexcel và sau đó lặp qua tất cả các hàng. Dựa trên những gì tôi muốn, tôi viết một lệnh chèn SQL đơn giản để chèn dữ liệu trong tệp excel vào bảng của mình.

Về mặt trước, nó là một công việc nhỏ, nhưng nó chỉ là vấn đề của việc điều chỉnh một số ví dụ mã hiện có. Nhưng khi bạn có nó, việc thực hiện các thay đổi đối với quá trình nhập rất đơn giản và nhanh chóng.


1

cách tốt nhất và dễ nhất là sử dụng ứng dụng "MySQL for Excel", một ứng dụng miễn phí của oracle. ứng dụng này đã thêm một plugin vào excel để xuất và nhập dữ liệu vào mysql. bạn có thể tải xuống từ đây


1

Khi sử dụng tệp văn bản để nhập dữ liệu, tôi gặp sự cố với dấu ngoặc kép và cách Excel định dạng số. Ví dụ: cấu hình Excel của tôi đã sử dụng dấu phẩy làm dấu phân tách thập phân thay vì dấu chấm.

Bây giờ tôi sử dụng Microsoft Access 2010 để mở bảng MySql của tôi dưới dạng bảng được liên kết. Ở đó, tôi chỉ có thể sao chép và dán các ô từ Excel sang Access.

Để thực hiện việc này, trước tiên hãy cài đặt trình điều khiển MySql ODBC và tạo kết nối ODBC . Sau đó, trong quyền truy cập, trong tab "Dữ liệu Bên ngoài", hãy mở hộp thoại "Cơ sở dữ liệu ODBC" và liên kết đến bất kỳ bảng nào bằng kết nối ODBC.

Sử dụng MySql Workbench , bạn cũng có thể sao chép và dán dữ liệu Excel của mình vào lưới kết quả của MySql Workbench. Tôi đã hướng dẫn chi tiết trong câu trả lời này .



0

Bạn có thể sử dụng DocChow , một GIU rất trực quan để nhập Excel vào MySQL và nó miễn phí trên hầu hết các nền tảng phổ biến (bao gồm cả Linux).

Đặc biệt hơn nếu bạn lo lắng về kiểu dữ liệu ngày tháng, datetime, DocChow dễ dàng xử lý các kiểu dữ liệu. Nếu bạn đang làm việc với nhiều bảng tính Excel mà bạn muốn nhập vào một bảng MySQL, DocChow thực hiện công việc khó khăn.


0

Bước 1 Tạo tệp CSV của bạn

Bước 2 đăng nhập vào máy chủ mysql của bạn

     mysql -uroot -pyourpassword 

Bước 3 tải tệp csv của bạn

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);

0

Một công cụ hữu ích khác và là công cụ thay thế cho MySQL front-end là Toad for MySQL . Đáng buồn thay, Quest không còn hỗ trợ nữa mà là một IDE tuyệt vời cho MySQL, với các thuật sĩ IMPORT và EXPORT, phục vụ cho hầu hết các loại tệp.

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.