2013-04-08 104 views
13

Tôi có một điều kỳ lạ xảy ra khi nhập dữ liệu từ Excel vào SQL Server bằng cách sử dụng công cụ Nhập và Xuất Dữ liệu.Nhập dữ liệu từ Excel sang SQL Server không nhập được tất cả dữ liệu

Ngắn gọn là tôi có thể xem dữ liệu trong Excel, nhưng tất cả dữ liệu không nhập.

Tôi có sổ làm việc excel chứa một bảng tính. Tôi có thể thấy dữ liệu trong các cột và mọi thứ đều tốt. Khi tôi sử dụng trình hướng dẫn nhập để nhập dữ liệu, tôi có thể thấy các cột và dữ liệu xem trước, nhưng dữ liệu không được chuyển tất cả khi quá trình nhập được thực thi. Không có lỗi và quá trình nhập hoàn tất - nó chỉ chèn một loạt các giá trị null vào bảng.

Dường như nó xảy ra nhiều nhất với các con số - vì vậy, giả sử tôi có ba cột cho tên, họ và số ID. Tôi sẽ nhận được tất cả các tên và họ, và một số số ID. Tôi không thể tìm thấy một mô hình cho những gì đang xảy ra.

Tôi đã thực hiện điều này một lần trước và tôi nhận thấy rằng có hai bảng tính để chọn trong quá trình nhập: DataImport và DataImport $ - và bảng đầu tiên sẽ thất bại như được mô tả ở trên và bảng thứ hai sẽ nhập hoàn hảo. Lần này chỉ có một bảng tính để chọn.

Tôi chủ yếu sử dụng tài liệu XLS và trình hướng dẫn nhập 32 bit trên hệ thống 64 bit, nhưng tôi sẵn sàng thử bất kỳ thứ gì.

Bất kỳ ý tưởng nào về lý do tại sao có hai bảng tính (đôi khi) và tại sao nhập này sẽ không thành công?

Dave

+1

Bạn có thể thử sao chép chính xác phạm vi dữ liệu và sau đó tạo tệp excel mới, nhưng trước khi dán dữ liệu, bạn có thể đặt định dạng ô của tệp excel mới được tạo dưới dạng văn bản và thử nhập tệp mới này. –

+1

Tôi đã thử thay đổi tất cả định dạng thành văn bản chung và điều đó không có tác dụng. Tôi đã nhận thấy rằng một vài trường số có hình tam giác nhỏ chỉ ra rằng các ô liền kề là số và đây là văn bản, vì vậy tôi đã cố gắng thay đổi định dạng cột thành một hoặc khác. Tuy nhiên, không có thay đổi về kết quả. Tôi chưa bao giờ cố gắng sao chép và dán dữ liệu vào bảng tính mới, nhưng tôi có thể dùng thử. Tôi sẽ cho bạn biết làm thế nào mà đi trong một vài phút. –

+1

Không may mắn. Thủ thuật sao chép và dán không hoạt động. Tôi nhận thấy rằng cột thất bại có ba hàng chính xác, sau đó một hàng được cho là để trống (cho cột ID đó) và sau đó sau đó không có gì được nhập (cho cột ID đó). Ngoài ra, tôi đang sử dụng Excel 2013 nếu điều đó quan trọng. –

Trả lời

0

Bạn đang sử dụng Trình hướng dẫn nhập, phải không? Nhấp vào Edit Mappings trên trang "Chọn bảng nguồn và chế độ xem" của trình hướng dẫn và kiểm tra các cột Loại, Nullable và Kích thước cho mỗi cột nguồn. Có vẻ như có gì đó không được lập bản đồ đúng cách.

+0

Vâng, tôi đang sử dụng Trình hướng dẫn. Mỗi lần tôi kiểm tra bằng tay (hoặc tạo trong một số trường hợp) các ánh xạ nên tôi chắc chắn chúng đúng. Tôi đã sử dụng excel để chuyển hàng triệu hàng trong những năm qua, nhưng tôi có một khách hàng cung cấp một tập tin nhập khẩu mà không phải lúc nào cũng làm việc, vì vậy tôi đang thua lỗ. –

0

Có thể là hàng trống nhất định khiến Sql Server bỏ qua phần còn lại của dữ liệu. Bu để chắc chắn bạn có thể chia sẻ lược đồ của tệp excel và năm hàng đầu tiên không? Ba chính xác và hai bản ghi tiếp theo.

+0

Thật không may là tôi không thể chia sẻ bảng tính này - và vì lý thuyết của tôi là chỉnh sửa thủ công bảng tính làm ô nhiễm dữ liệu, tôi không biết nếu chỉnh sửa và tải lên nó sẽ có giá trị. Mặc dù vậy, tôi có thể thử, nếu bạn nghĩ điều đó sẽ giúp ích. –

+0

Bạn có thể thử lưu tệp excel dưới dạng csv và nhập tệp đó dưới dạng tệp csv không? Nó có thể cung cấp cho chúng tôi một sự hiểu biết sâu hơn về những gì gây ra vấn đề này. –

+0

Tôi đã xuất tệp dưới dạng tệp được phân cách bằng tab và sau đó nhập lại tệp và nó đã hoạt động. Giải pháp này cuối cùng sẽ làm việc trong thời gian dài, nhưng tôi quan tâm để tìm hiểu lý do tại sao Excel không thành công. –

32

Câu trả lời cho câu hỏi của bạn có thể liên quan đến dữ liệu CÁCH được lưu trữ trong Excel.

Tôi vừa gặp sự cố tương tự. Tôi đã có một cột chứa hai loại giá trị: số và số với dấu gạch ngang. (ví dụ 51000 và 2009-00949) Tôi cần phải nhập chúng dưới dạng NVARCHAR hoặc VARCHAR, nhưng thuật sĩ nhập SQL (SQL2005) sẽ chỉ nhập các số và không phải là số với dấu gạch ngang hoặc số bằng dấu gạch ngang chứ không phải số , tùy thuộc vào loại nào trong hồ sơ đầu tiên. Các giá trị không được nhập sẽ có giá trị 'null' trong trường, hiển thị các bản ghi của tôi vô ích.

Tôi đã thử sử dụng tùy chọn trình đơn Định dạng | Ô trong Excel (số, văn bản, chung, v.v.) và các tùy chọn ánh xạ khác nhau trong SQL (nvar, nvarchar, varchar, sqlvariant, float) mà không thành công.

Giải pháp là sử dụng tùy chọn Data | Text To Columns trong Excel, không phải tùy chọn định dạng ô để lưu trữ giá trị số dưới dạng văn bản. Khi tôi sử dụng điều này trên cột, các giá trị số (ví dụ 51000) được chuyển đổi thành số được lưu trữ dưới dạng giá trị văn bản (lỗi tam giác xanh nhỏ xuất hiện ở góc trên bên trái), các số với dấu gạch ngang vẫn là văn bản. Tôi đã phải để lại dữ liệu ở định dạng này, với lỗi tam giác màu xanh lá cây nhỏ, nếu không nó sẽ không thành công nhập khẩu vào SQL. Khi dữ liệu trong cột được lưu trữ ở định dạng này, hai loại dữ liệu cột (số và số với dấu gạch ngang) được nhập chính xác với dữ liệu bản ghi khác, không có giá trị null trong cột.

+1

Tôi đã làm việc về vấn đề này một lần nữa trong tuần này, vì vậy câu trả lời của bạn là kịp thời. Điều tôi đã nhận thấy là định dạng bảng tính không có tác dụng, nhưng nó không phải là điều dễ hiểu. Tôi đã có một vài trường hợp định dạng dữ liệu như bạn mô tả giúp và một số nơi nó không. Và tôi không thể tìm thấy vần điệu hay lý do đằng sau nó. –

+2

+100! RỰC RỠ. Tôi đã chiến đấu mãi mãi và giải pháp này rất đơn giản. Tôi ước gì tôi đã nghĩ về nó. CẢM ƠN BẠN! –

+1

Cảm ơn bạn! Điều này đã khiến tôi phát điên, và dữ liệu | Text To Columns là giải pháp! – Neil

1

Vấn đề của tôi là tệp tôi đã nhập là tệp excel cũ hơn và hơi bị ác tính. Tôi đã mở tệp và lưu tệp dưới dạng tệp .xlsx và tệp được nhập thành công mà không có dữ liệu rỗng sau đó.

0

Chọn tất cả các hàng của cột đó và thay đổi loại thành Văn bản trong excel sau đó Chọn toàn bộ cột và thay đổi loại thành Văn bản Chắc chắn sẽ hoạt động.

0

Tôi cũng gặp sự cố. Cách duy nhất mà tôi có thể giải quyết nó là lưu tệp .xlsx dưới dạng tệp .csv và sau đó sử dụng tệp .csv vào SQL Server "Nhập dữ liệu".

Dường như việc tích hợp giữa Microsoft Excel và Microsoft SQL Server sẽ rõ ràng hơn.

phiên bản của tôi là: Excel 2013. SQL Server 2012.

+1

Tôi không thể sử dụng CSV, nhưng lưu XLSX dưới dạng XLS và sử dụng chương trình nhập 32 nhưng dường như cho tôi kết quả đáng tin cậy. –

1

tôi đã có thể giải quyết vấn đề bằng cách phân loại dữ liệu để các dữ liệu văn bản là trên đầu trang. Bằng cách đó, SQL Server biết đó là dữ liệu văn bản, không phải dữ liệu số.

0

Tôi gặp phải vấn đề tương tự Sử dụng .xlsx tệp đã giải quyết được sự cố của tôi.

0

Cuối cùng định dạng ô để làm việc chung cho tôi, nơi có giá trị số, trước đó nó đã được hiển thị% s nhưng bây giờ nó được giải quyết.

Các vấn đề liên quan