Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhập tệp CSV vào SQL Server

Nhập CSV dựa trên SQL Server

1) Dữ liệu tệp CSV có thể có , (dấu phẩy) ở giữa (Ví dụ:mô tả), vậy làm cách nào để thực hiện nhập xử lý những dữ liệu này?

Giải pháp

Nếu bạn đang sử dụng , (dấu phẩy) làm dấu phân cách, thì không có cách nào để phân biệt giữa dấu phẩy làm dấu chấm cuối trường và dấu phẩy trong dữ liệu của bạn. Tôi sẽ sử dụng một FIELDTERMINATOR khác như || . Mã sẽ trông giống như vậy và điều này sẽ xử lý hoàn hảo dấu phẩy và dấu gạch chéo.

2) Nếu khách hàng tạo csv từ excel thì dữ liệu của hascomma được bao gồm trong " ... " (dấu ngoặc kép) [như ví dụ bên dưới], vậy làm cách nào để quá trình nhập có thể xử lý điều này?

Giải pháp

Nếu bạn đang sử dụng BULK insert thì không có cách nào để xử lý dấu ngoặc kép, dữ liệu sẽ được chèn thêm dấu ngoặc kép vào các hàng. Sau khi chèn dữ liệu vào bảng, bạn có thể thay thế các dấu ngoặc kép đó bằng ' '.

update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3) Làm cách nào để theo dõi nếu một số hàng có dữ liệu không hợp lệ, quá trình nhập nào bỏ qua? (Nhập có bỏ qua các hàng không thể nhập)?

Giải pháp

Để xử lý các hàng không được tải vào bảng do dữ liệu hoặc định dạng không hợp lệ, có thể hoạt động bằng cách sử dụng thuộc tính ERRORFILE, hãy chỉ định tên tệp lỗi, nó sẽ ghi lỗi chia hàng vào tệp lỗi. mã sẽ trông như thế nào.

BULK INSERT SchoolsTemp
    FROM 'C:\CSVData\Schools.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
    TABLOCK
    )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa tài khoản thư cơ sở dữ liệu trong SQL Server (T-SQL)

  2. SQL Server Internals:Các toán tử có vấn đề Pt. Tôi - Quét

  3. Xem lại Cài đặt phiên của bạn với SESSIONPROPERTY () trong SQL Server

  4. ADO.NET gọi Thủ tục lưu trữ T-SQL gây ra SqlTimeoutException

  5. Làm cách nào để thực hiện kích hoạt TRƯỚC KHI CẬP NHẬT với máy chủ sql?