Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Import data từ excel vào SQL

11:27 28-12-2018 5.111 lượt xem 7 bình luận 22:18 17-02-2019

Xin chào các bạn.

Làm phiền cho mình hỏi 1 câu với.

Mình có 1 file excel muốn import vào SQL có sẵn. Mình tìm hiểu trên google thì có hướng dẫn dùng chức năng import trên SQL hoặc dùng qua Viso studio.

Nhưng mình làm thử thì gặp 1 vài khó khăn : như kiểu dữ liệu không được như ý mình, và bảng tạo ra là 1 bảng mới hoàn toàn, mình không thể update vô bảng cũ có sẵn.

Vậy cho mình hỏi, mình đã có sẵn database và các bảng có sẵn, mình chỉ muốn import dữ liệu vô bảng để khỏi nhập lệnh Insert quá nhiều và quá lâu. Bạn nào có kinh nghiệm làm cái này cho mình xin hướng dẫn với nha. 

 

Mình xin cảm ơn

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Hoàng Trung đã bình luận 17:41 31-12-2018

Nếu bạn đang làm việc với mysql thì có thể dùng thử navicat để import data từ excel.

kiet0712 đã bình luận 10:46 29-12-2018

Bạn đoán xem

Lâm Eco đã bình luận 22:18 17-02-2019

Bạn muốn update bảng cũ vào SQL thì bạn có thể làm theo cách như sau:

Dùng chức năng trong thẻ DATA / Get Exernal Data/ From orther Source/From SQL server. Sau đó làm theo các bước  để lấy dữ liệu lên excel.

B2: Bạn dùng sự kiện worksheet_change để thay đổi dữ liệu trong SQL.

Mình ví dụ sơ sơ cho bạn:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr As Long
Dim cot As String
Dim val As Variant
Dim sql As String
lr = Sheets("Nhap").Range("E" & Rows.Count).End(3).Row
If Not Application.Intersect(Range("A2:M" & lr), Range(Target.Address)) Is Nothing Then
cot = tracot(Target)
val = Target.Value
On Error GoTo BO
If cot <> "NGAY" Then
sql = "UPDATE NHAP SET " & cot & "=N'" & val & "' where STT ='" & Range("A" & Target.Row).Value & "'"

Else
sql = "UPDATE NHAP SET " & cot & "=convert(datetime,'" & val & "',103) where STT ='" & Range("A" & Target.Row).Value & "'"

End If
chaysqlNhap (sql)
End If
BO:
End Sub
Sub chaysqlNhap(sql As String)
    Dim cn As Object
    Dim rs As Object
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    Dim ServerName As String
    Dim DatabaseName As String
    Dim TableName As String
    Dim UserID As String
    Dim PassWord As String
      
    ServerName = LECO.Range("A1").Value
    DatabaseName = LECO.Range("A4").Value
    TableName = "NHAP"
    UserID = LECO.Range("A2").Value
    PassWord = LECO.Range("A3").Value
    
    cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & DatabaseName & _
    ";Uid=" & UserID & ";Pwd=" & PassWord & ";"
    
    cn.Execute sql
    cn.Close
    Set cn = Nothing
    End Sub
Function tracot(Target As Range) As String
Select Case Target.Column
Case 1
tracot = "STT"
Case 2
tracot = "NGAY"
Case 3
tracot = "SO_XE"
Case 4
tracot = "SO_PHIEU"
Case 5
tracot = "KHACH_HANG"
Case 6
tracot = "MAT_HANG"
Case 7
tracot = "SL_DAU"
Case 8
tracot = "TRU_BI"
Case 9
tracot = "SL_CUOI"
Case 10
tracot = "DON_GIA"
Case 11
tracot = "THANH_TIEN"
Case 12
tracot = "GHI_CHU"
Case 13
tracot = "TT_THANH_TOAN"
Case Else
tracot = "We have error"
End Select
End Function

Nhìn hơi củ chuối nhưng mà mình đã từng làm nó chạy cũng không đến nổi lắm. 

Câu hỏi mới nhất