Lỗi khi lấy dữ liệu từ file CSV bằng ADO (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

MinhKhai

Giải pháp Ếc-xào
Tham gia
16/4/08
Bài viết
941
Được thích
574
Chào các anh chị
Em tham khảo được đoạn code để lấy dữ liệu từ file CSV.
Ở file mẫu thì chạy tốt nhưng khi em đưa vào file của em thì báo lỗi như hình dưới. Sau vài ngày đánh vật với nó em mới nhận ra rằng tên file CSV có dấu chấm nên code báo lỗi, thay dấu chấm bằng dấu gạch ngang thì code chạy bình thường.
Vấn đề là file CSV em cần lấy dữ liệu được kết xuất từ phần mềm khác nên không thể thay đổi định dạng tên file.
Vậy nhờ các anh chị cho cách xử lý với lỗi trên để có thể dùng với tên file có dấu chấm.
Xin cảm ơn các anh chị

1597941890286.png
 

File đính kèm

Nếu tải file về xem rồi thì cũng nên cho biết tình hình như nào chứ chủ thớt.

Hoặc nếu chúng ta "hết mến" nhau rồi thì cũng nên nói một nhời để lần sau mình không động tới bài nào nữa.
 
Nếu tải file về xem rồi thì cũng nên cho biết tình hình như nào chứ chủ thớt.

Hoặc nếu chúng ta "hết mến" nhau rồi thì cũng nên nói một nhời để lần sau mình không động tới bài nào nữa.
Hi @befaint, cảm ơn bạn đã giúp mình rất nhiều bài khoai từ rất lâu rồi. Ở bài đầu tiên bạn còn chú thích từng dòng code cho mình. Mình vẫn thường vào Google Sites của bạn để xem kiến thức về VBA 1 cách hệ thống. Chỉ tiếc là bản thân mình như các cụ nói "Không thầy đố mày hiểu đấy" :p
Quay lại bài trên, quả thực lúc này mình mới vào xem và tải file về.
Sau khi xem code mẫu và chỉnh sửa cho phù hợp thực tế (file .csv thực tế được chia sẻ trên ổ mạng), gặp khá nhiều lỗi phát sinh do việc sửa đổi không đồng bộ, cuối cùng thì Code của bạn đã chạy tốt với tình huống thực tế của mình. Một lần nữa cảm ơn bạn rất nhiều

Tiện đây cho mình hỏi thêm

* Để dữ liệu được nhập vào file đích được sắp xếp theo cột thứ 6 (theo thứ tự tăng dần), mình có thêm đoạn ORDER BY F6. Tuy nhiên kết quả không được như mong muốn.
- Nếu để HDR=No thì dữ liệu từ file nguồn vẫn được tải về và có sắp xếp, tuy nhiên lúc này dòng header của file nguồn cũng được copy vào và bị đẩy xuống dưới làm data
- Nếu đổi HDR=YES thì xuất hiện lỗi như hình bên.

Rất mong bạn chỉ cách để xử lý việc có sắp xếp mà loại trừ dòng header của file nguồn ra


1598215857759.png



1598216269198.png
 
Thử vầy xem:

PHP:
"Select * From [" & short_name_csv & "] As T1 Order by T1.f6"
 
Thử thêm giải pháp dùng Power Query xem sao anh @MinhKhai (chắc sẽ không có j nuối tiếc)
 

Dịch để hiểu lỗi gì:


The Microsoft Access database engine could not find the object
'2020.08.20_Delivered.csv'. Make sure the object exists and that you
spell its name and the path name correctly. If
'2020.08.20_Delivered.csv' is not a local object, check your network
connection or contact the server administrator.


Công cụ cơ sở dữ liệu Microsoft Access không thể tìm thấy đối tượng
'2020.08.20_Delivered.csv'. Đảm bảo rằng đối tượng tồn tại và bạn
đánh vần tên của nó và tên đường dẫn một cách chính xác. Nếu
'2020.08.20_Delivered.csv' không phải là một đối tượng cục bộ, hãy kiểm tra mạng của bạn
kết nối hoặc liên hệ với quản trị viên máy chủ.
Bài đã được tự động gộp:

1598215857759.png
Dịch: Không có giá trị nào cho một hoặc nhiều tham số bắt buộc.

Sub GetData_CSV dư đoạn CreateObject và ShortName
dùng dấu '' để thay thế

Sử dụng F trong Query thì HDR=No
 
Lần chỉnh sửa cuối:
Thử thêm giải pháp dùng Power Query xem sao anh @MinhKhai (chắc sẽ không có j nuối tiếc)
Cảm ơn Mister Cá Ngừ. Mình đang muốn nó chạy tự động hàng ngày, mà Power Query không đáp ứng được. Power Query vẫn cần phải có bấm bấm chọn chọn.
Gần đây em có dùng Power BI không, anh xem nhiều clip trên Youtube mà giờ vẫn chưa hiểu dùng làm gì (BI Desktop, BI Mobile). Khi nào thằng Power Covid giảm thì gặp gỡ tí nhể
Bài đã được tự động gộp:

Bạn gửi file sau khi chỉnh lên nhé.
Đây bạn ơi
Minh xin nói rõ thêm:
Code ban đầu bạn hỗ trợ đã chạy, chỉ là mình suốt sắp xếp, khi sắp xếp, dòng đầu tiên của file nguồn bị copy vào và đẩy xuống xuống làm dòng dữ liệu. Mình muốn khi copy vào không có 1 dòng đầu tiên của file nguồn.
Cảm ơn bạn
 

File đính kèm

Lần chỉnh sửa cuối:
dòng đầu tiên của file nguồn
File csv bạn gửi thì dòng đầu là dữ liệu như các dòng khác, không phải Title /Header.

1598861359865.png

Tạm thời có một cách đơn giản: Bạn record macro xóa dòng 5, rồi sort bảng theo cột F. Rồi chỉnh/chèn code đó vào sau phần lấy dữ liệu là được.
 
Dịch để hiểu lỗi gì:


The Microsoft Access database engine could not find the object
'2020.08.20_Delivered.csv'. Make sure the object exists and that you
spell its name and the path name correctly. If
'2020.08.20_Delivered.csv' is not a local object, check your network
connection or contact the server administrator.


Công cụ cơ sở dữ liệu Microsoft Access không thể tìm thấy đối tượng
'2020.08.20_Delivered.csv'. Đảm bảo rằng đối tượng tồn tại và bạn
đánh vần tên của nó và tên đường dẫn một cách chính xác. Nếu
'2020.08.20_Delivered.csv' không phải là một đối tượng cục bộ, hãy kiểm tra mạng của bạn
kết nối hoặc liên hệ với quản trị viên máy chủ.
Bài đã được tự động gộp:


Dịch: Không có giá trị nào cho một hoặc nhiều tham số bắt buộc.

Sub GetData_CSV dư đoạn CreateObject và ShortName
dùng dấu '' để thay thế

Sử dụng F trong Query thì HDR=No

Hi @HeSanbi
Thông báo của Excel "Make sure the object exists and that you spell its name and the path name correctly" đúng là rất rõ ràng, nhưng vấn đề là cái object "2020.08.20_Delivered.csv" nó đang tồn tại đúng theo đường dẫn.
Vì điều này mà có đoạn Code của Befain dùng ShortName mà bạn. Code đó đã chạy tốt. Mình chỉ muốn hỏi thêm là khi thêm lệnh sắp xếp trong code thì nó phát sinh dòng header của file nguồn như mình mô tả bên trên.
 
Tính trả lời mà sợ bị gọi mịt tờ mờ tịt quá nên thôi.

Sấm Thiền Đăng: trời mờ tịt mịt tờ bờ rao rờ bao trong kít chân kiếm chít cân.
 
File csv bạn gửi thì dòng đầu là dữ liệu như các dòng khác, không phải Title /Header.

View attachment 244558

Tạm thời có một cách đơn giản: Bạn record macro xóa dòng 5, rồi sort bảng theo cột F. Rồi chỉnh/chèn code đó vào sau phần lấy dữ liệu là được.
Sorry @befaint , file csv mình gửi đã bị thay đổi dòng Header, file gốc luôn có dòng đó..
Nếu không có yêu cầu sắp xếp thì code của bạn chạy rất mượt. Tiện trong ADO mình muốn nó sắp xếp khi copy từ Recordset ra. Cách Copy ra Cell rồi dùng VBAl sắp xếp thì không chỉ đi đường vòng mà tốc độ chắc cũng có ảnh hưởng.
Một lần nữa cảm ơn bạn
 
Mình đang muốn nó chạy tự động hàng ngày, mà Power Query không đáp ứng được
Sao lại không đáp ứng được nhỉ, cũng đều là bán tự động cả, ADO hay PQ kiểu j cũng phải có người tác động thì mới chạy được chứ ạ.
 
Tính trả lời mà sợ bị gọi mịt tờ mờ tịt quá nên thôi.
Chào bác, dùng 1 từ đó mà bị thẻ vàng thì thật buồn quá.
Bài đã được tự động gộp:

Sao lại không đáp ứng được nhỉ, cũng đều là bán tự động cả, ADO hay PQ kiểu j cũng phải có người tác động thì mới chạy được chứ ạ.
Anh dùng Task Scheduler kích hoạt file Excel với tính năng Workbook_Open mà em
 
MinhKhai
Bác ơi, đừng tự làm khổ mình.

Chuỗi nguồn đặt trong hai dấu nháy kép hoặc nháy đơn thì không cần đến Shortname

Data Source = "".../.../...csv"";
Hoặc: Data Source = '.../.../...csv';

Còn với câu lệnh Sort, bác có thể viết trong câu lệnh truy vấn SQL hoặc khi Recordset đã nhận được kết quả.

Ví dụ Sort cột 1:
RS.Sort RS.Fields(0).Name & " Desc" ' Hoặc " Asc"
 
Chào bác, dùng 1 từ đó mà bị thẻ vàng thì thật buồn quá.
...
Ở diễn đàn này chỉ có hai người trình độ SQL sánh được với tôi thôi. Nếu không chấp nhận luật sân chơi của tôi thì đợi hai người đó.

Về tiếng Anh thì ở diễn đàn này không có ai đủ để nói chuyện với tôi hết. Vì tôi dùng tiếng Anh phát ngán đến tận cổ cho nên tôi rất trọng tiếng Vệt.
 
Ở diễn đàn này chỉ có hai người trình độ SQL sánh được với tôi thôi. Nếu không chấp nhận luật sân chơi của tôi thì đợi hai người đó.

Về tiếng Anh thì ở diễn đàn này không có ai đủ để nói chuyện với tôi hết. Vì tôi dùng tiếng Anh phát ngán đến tận cổ cho nên tôi rất trọng tiếng Vệt.
Mong mỏi 1 ngày được gặp gỡ offline các cao thủ võ lâm. Những dòng code của các bác/anh quá tuyệt vời, giải quyết cơ số bài toán hóc búa
 
MinhKhai
Bác ơi, đừng tự làm khổ mình.

Chuỗi nguồn đặt trong hai dấu nháy kép hoặc nháy đơn thì không cần đến Shortname

Data Source = "".../.../...csv"";
Hoặc: Data Source = '.../.../...csv';

Còn với câu lệnh Sort, bác có thể viết trong câu lệnh truy vấn SQL hoặc khi Recordset đã nhận được kết quả.

Ví dụ Sort cột 1:
RS.Sort RS.Fields(0).Name & " Desc" ' Hoặc " Asc"
Cảm ơn bạn, mai mình mới kiểm tra trên máy tính xem gơi ý của bạn có chạy như mong muốn không
 
MinhKhai
Bác ơi, đừng tự làm khổ mình.

Chuỗi nguồn đặt trong hai dấu nháy kép hoặc nháy đơn thì không cần đến Shortname

Data Source = "".../.../...csv"";
Hoặc: Data Source = '.../.../...csv';

Còn với câu lệnh Sort, bác có thể viết trong câu lệnh truy vấn SQL hoặc khi Recordset đã nhận được kết quả.

Ví dụ Sort cột 1:
RS.Sort RS.Fields(0).Name & " Desc" ' Hoặc " Asc"
Bạn ơi, mình thử vài lần mà không thành công, mình gửi file đính kèm, bạn thêm giúp mình cái dấu nháy đơn hoặc nháy kép như bạn hướng dẫn nhé
Cảm ơn bạn
 

File đính kèm

Chủ thớt xem bài số 4 Mục số 2 là làm được như hình sau
hôm nào rảnh đưa thêm CSV vào SQL cho mà xài ... chỉ là thêm cái If nữa là xong thôi mà

đang mò đưa cái gán dữ liệu lên Sheet kiểu Office 365 trên Delphi mà kẹt vài thứ chưa xong ( Khi nào xong úp DLL cho he )

Với Mạnh chỉ hướng dẫn cho vậy thôi ... còn làm chi tiết thì ít lắm
1598969025529.png
 
Bạn ơi, mình thử vài lần mà không thành công, mình gửi file đính kèm, bạn thêm giúp mình cái dấu nháy đơn hoặc nháy kép như bạn hướng dẫn nhé
Cảm ơn bạn
Đúng là trong trường hợp của bác là phải dùng ShortName, vì tên chứa dấu ngoại lệ.

Trong Connect path chứa dấu ngoại lệ:
strConnect = "Provider=Microsoft.ACE.OLEDB.16.0; " _
& "Data Source =""" & Path & """;" _
& "Extended Properties=""Text;HDR=No;FMT=Delimited""; "

Trong Query: Thêm cặp ngoặc vuông [] nếu từ khóa chứa chuỗi unicode, kí tự ngoại lệ, hoặc shortName


Dưới đây là đoạn code mà bác không cần dùng đến ShortName, vì nếu file trong folder là duy nhất.
Code dưới cũng sẽ lấy Header nếu có

JavaScript:
Sub GetData_1()
  Dim d As Date, CellKQ As Range, fileDirPath As String
  Dim CN, RS, Query$
  d = Sheets("DATA").Range("A2").Value
  fileDirPath = ThisWorkbook.Path & "\" & Format(d, "yyyy.mm.dd") & "\"
  Set CN = VBA.CreateObject("ADODB.Connection")
  With CN
    .Provider = "Microsoft.ACE.OLEDB.16.0"
    .ConnectionString = "Data Source='" & fileDirPath & "';Extended Properties='text;hdr=no;IMEX=1'"
  End With
  CN.Open
  Set RS = VBA.CreateObject("ADODB.Recordset")
  Query = "SELECT * FROM [" & Format(d, "yyyymm") & "~1" & ".csv] WHERE ISNUMERIC(F2) ORDER BY 6 ASC"
  RS.Open Query, CN, 3, 1
  If Not RS.BOF Or Not RS.EOF Then Sheets("DATA").Cells(5, 1).CopyFromRecordset RS
  Set RS = VBA.CreateObject("ADODB.Recordset")
  Query = "SELECT TOP 1 * FROM [" & Format(d, "yyyymm") & "~1" & ".csv] WHERE NOT ISNUMERIC(F2)"
  RS.Open Query, CN, 3, 1
  If Not RS.BOF Or Not RS.EOF Then Sheets("DATA").Cells(4, 1).CopyFromRecordset RS
  CN.Close
  Set CN = Nothing: Set RS = Nothing
End Sub
 

File đính kèm

@Chủ Topic
Thực hiện theo Short Name, và đặt HDR=YES ---> rồi Order theo đúng tiêu đề có trong CSV là được mong muốn
Nhưng tên đặt kiểu thư mục / file này thì làm khó chính mình thôi
 
@Chủ Topic
Thực hiện theo Short Name, và đặt HDR=YES ---> rồi Order theo đúng tiêu đề có trong CSV là được mong muốn
Nhưng tên đặt kiểu thư mục / file này thì làm khó chính mình thôi
Thực hiện theo Shortname thì bài #2 bạn @befaint đã giúp em rồi. Do có bạn HeSanbi nói đặt chuỗi nguồn trong nháy kép mà không cần shortname nên em mới hỏi lại.
Về vấn đề đặt tên thư mục, em không thay đổi được, em lấy dữ liệu của người khác chia sẻ vì vậy phải tìm cách vượt qua thử thách này thôi
Bài đã được tự động gộp:

Chủ thớt xem bài số 4 Mục số 2 là làm được như hình sau
hôm nào rảnh đưa thêm CSV vào SQL cho mà xài ... chỉ là thêm cái If nữa là xong thôi mà
Bạn chia sẻ phần này cho mình được không. Mình cũng đang rất quan tâm đến cái này. Thực tế mình đang lấy dữ liệu từ .csv vào sheet rồi đẩy vào SQL Server. Trước có @ongke0711 đã hướng dẫn nhưng quá trình thực hiện gặp vướng mắc nên đành đi đường vòng qua worksheet của Excel
 
Lần chỉnh sửa cuối:
Đúng là trong trường hợp của bác là phải dùng ShortName, vì tên chứa dấu ngoại lệ.

Trong Connect path chứa dấu ngoại lệ:
strConnect = "Provider=Microsoft.ACE.OLEDB.16.0; " _
& "Data Source =""" & Path & """;" _
& "Extended Properties=""Text;HDR=No;FMT=Delimited""; "

Trong Query: Thêm cặp ngoặc vuông [] nếu từ khóa chứa chuỗi unicode, kí tự ngoại lệ, hoặc shortName


Dưới đây là đoạn code mà bác không cần dùng đến ShortName, vì nếu file trong folder là duy nhất.
Code dưới cũng sẽ lấy Header nếu có

JavaScript:
Sub GetData_1()
  Dim d As Date, CellKQ As Range, fileDirPath As String
  Dim CN, RS, Query$
  d = Sheets("DATA").Range("A2").Value
  fileDirPath = ThisWorkbook.Path & "\" & Format(d, "yyyy.mm.dd") & "\"
  Set CN = VBA.CreateObject("ADODB.Connection")
  With CN
    .Provider = "Microsoft.ACE.OLEDB.16.0"
    .ConnectionString = "Data Source='" & fileDirPath & "';Extended Properties='text;hdr=no;IMEX=1'"
  End With
  CN.Open
  Set RS = VBA.CreateObject("ADODB.Recordset")
  Query = "SELECT * FROM [" & Format(d, "yyyymm") & "~1" & ".csv] WHERE ISNUMERIC(F2) ORDER BY 6 ASC"
  RS.Open Query, CN, 3, 1
  If Not RS.BOF Or Not RS.EOF Then Sheets("DATA").Cells(5, 1).CopyFromRecordset RS
  Set RS = VBA.CreateObject("ADODB.Recordset")
  Query = "SELECT TOP 1 * FROM [" & Format(d, "yyyymm") & "~1" & ".csv] WHERE NOT ISNUMERIC(F2)"
  RS.Open Query, CN, 3, 1
  If Not RS.BOF Or Not RS.EOF Then Sheets("DATA").Cells(4, 1).CopyFromRecordset RS
  CN.Close
  Set CN = Nothing: Set RS = Nothing
End Sub
Cảm ơn bạn đã hỗ trợ.
Code của bạn đã chạy tốt.
Cho mình hỏi thêm là dữ liệu csv đã được copy vào file nhưng thứ tự cột không giống file csv. Không rõ đoạn code kiểm soát thứ tự các cột được copy vào file ở chỗ nào. Bạn chỉ giúp mình nhé !
 
Thực hiện theo Shortname thì bài #2 bạn @befaint đã giúp em rồi. Do có bạn HeSanbi nói đặt chuỗi nguồn trong nháy kép mà không cần shortname nên em mới hỏi lại.
Về vấn đề đặt tên thư mục, em không thay đổi được, em lấy dữ liệu của người khác chia sẻ vì vậy phải tìm cách vượt qua thử thách này thôi
Bài đã được tự động gộp:


Bạn chia sẻ phần này cho mình được không. Mình cũng đang rất quan tâm đến cái này. Thực tế mình đang lấy dữ liệu từ .csv vào sheet rồi đẩy vào SQL Server. Trước có @ongke0711 đã hướng dẫn nhưng quá trình thực hiện gặp vướng mắc nên đành đi đường vòng qua worksheet của Excel

Đã SQL server thì nên dùng chính chương trình của SQL server sẽ nhanh hơn (Store Procedure)
 
Bạn chia sẻ phần này cho mình được không. Mình cũng đang rất quan tâm đến cái này. Thực tế mình đang lấy dữ liệu từ .csv vào sheet rồi đẩy vào SQL Server. Trước có @ongke0711 đã hướng dẫn nhưng quá trình thực hiện gặp vướng mắc nên đành đi đường vòng qua worksheet của Excel
Bài số 2 và bài số 24 đã làm cho bạn hết rồi mà ... Mình muốn nếu vấn đề ra đó để mở rộng nghiên cứu thêm thôi mà
Thong thả bạn thử mò xem sao ===> xong rút ra cái mình cần ===> tự tay mà viết code lấy là ok ngay và luôn đó
 
Anh dùng Task Scheduler kích hoạt file Excel với tính năng Workbook_Open mà em
Bạn đang dùng VBA của các bạn khác ổn định nên tôi không ý kiến cái gì hay hơn (SQL hay Power query). Có điều tôi chưa hiểu "Task Scheduler kích hoạt file Excel với tính năng Workbook_Open" tại sao không dùng được với Power query? Bản thân Query có tính năng refresh on open, không những thế trong sự kiện workbook_Open cũng có thể viết câu lệnh refresh query được mà?
 
Có điều tôi chưa hiểu "Task Scheduler kích hoạt file Excel với tính năng Workbook_Open" tại sao không dùng được với Power query? Bản thân Query có tính năng refresh on open, không những thế trong sự kiện workbook_Open cũng có thể viết câu lệnh refresh query được mà?

Power query không có tự động mở Workbook (chạy Excel) bác à.
 
Bạn đang dùng VBA của các bạn khác ổn định nên tôi không ý kiến cái gì hay hơn (SQL hay Power query). Có điều tôi chưa hiểu "Task Scheduler kích hoạt file Excel với tính năng Workbook_Open" tại sao không dùng được với Power query? Bản thân Query có tính năng refresh on open, không những thế trong sự kiện workbook_Open cũng có thể viết câu lệnh refresh query được mà?
Chào bác.
Đúng là em chưa dùng tính năng nào của Power Query trừ tính năng Copy from Web để lấy dữ liệu từ Google sheet.
Theo em hình dung, dùng Power Query thì vẫn cần người dùng có vài thao tác theo menu của PQ. Còn em dùng Code VBA sẽ tự động hoàn toàn. Ngoài ra, em nghĩ rằng dùng PQ không nhanh, mượt bằng ADO.
Đây là suy nghĩ của em, nếu đuoc bác cho vài mẫu để em thấy sức mạnh của nó nhằm có động lực tìm hiểu về PQ thì tốt quá
 
Chào bác.
Đúng là em chưa dùng tính năng nào của Power Query trừ tính năng Copy from Web để lấy dữ liệu từ Google sheet.
Theo em hình dung, dùng Power Query thì vẫn cần người dùng có vài thao tác theo menu của PQ. Còn em dùng Code VBA sẽ tự động hoàn toàn. Ngoài ra, em nghĩ rằng dùng PQ không nhanh, mượt bằng ADO.
Đây là suy nghĩ của em, nếu đuoc bác cho vài mẫu để em thấy sức mạnh của nó nhằm có động lực tìm hiểu về PQ thì tốt quá
Chữ Power đủ để nói lên tất cả anh ạ. Chắc chắn sẽ không có j tiếc nuối. ADO mà ăn cả 1 folder chắc bội thực luôn.
 
Chào bác.
Đúng là em chưa dùng tính năng nào của Power Query trừ tính năng Copy from Web để lấy dữ liệu từ Google sheet.
Theo em hình dung, dùng Power Query thì vẫn cần người dùng có vài thao tác theo menu của PQ. Còn em dùng Code VBA sẽ tự động hoàn toàn. Ngoài ra, em nghĩ rằng dùng PQ không nhanh, mượt bằng ADO.
Đây là suy nghĩ của em, nếu đuoc bác cho vài mẫu để em thấy sức mạnh của nó nhằm có động lực tìm hiểu về PQ thì tốt quá
Power query thao tác một lần duy nhất, sau đó chỉ cần refresh để cập nhật dữ liệu mới nhất, nếu gộp nhiều file thành một thì thậm chí khi thêm file, chỉ cần chép thêm file vào thư mục. Cũng tương đương SQL Union nhiều file trong thư mục. Thao tác cũng đơn giản chứ không khó như học lập trình, học SQL
Tài liệu tôi đã chia sẻ từ 2019: https://www.giaiphapexcel.com/diend...pivot-nhân-sinh-nhật-gpe13.143641/post-927216
 
Đã SQL server thì nên dùng chính chương trình của SQL server sẽ nhanh hơn (Store Procedure)
Ôi may quá, chủ đề đang tìm kiếm.
Em dựng 1 con SQL Server có cài SSMS được mấy tháng mà chưa làm ăn được gì với nó. Mục đích là dựng database của riêng mình từ các file csv (được kết xuất từ DB khác (tất nhiên em ko đc mò vào cái DB ấy rồi).
Mấy bài em hỏi về ADO cũng là để truy xuất dữ liệu ra Excel và đưa dữ liệu vào DB. Việc truy xuất thì em đã copy đc đoạn code mẫu trên diễn đàn nên tạm thời yên tâm. Riêng việc đưa dữ liệu vào SQL Server thì thật tốn thời gian vì phải đi lòng vòng theo đúng khả năng hạn hẹp của mình. Em đã tạo Job và chỉ chờ cái quan trọng nhất là SP (Stored Procedure) nhưng chưa khi nào làm được dù cũng sục sạo trên Youtube và Google. Tiện đây bác chỉ giúp em với nhé hoặc em mở topic mới thì bác hướng dẫn em. Cảm ơn bác
Bài đã được tự động gộp:

Power query thao tác một lần duy nhất, sau đó chỉ cần refresh để cập nhật dữ liệu mới nhất, nếu gộp nhiều file thành một thì thậm chí khi thêm file, chỉ cần chép thêm file vào thư mục. Cũng tương đương SQL Union nhiều file trong thư mục. Thao tác cũng đơn giản chứ không khó như học lập trình, học SQL
Tài liệu tôi đã chia sẻ từ 2019: https://www.giaiphapexcel.com/diend...pivot-nhân-sinh-nhật-gpe13.143641/post-927216
Bác ơi, mỗi ngày tên file csv lại khác nhau mà. Tên file được có quy luật là kèm tiền tố là ngày tháng được tạo ra. Không rõ PQ có uyển chuyển được vấn đề này không ?
 
Bác ơi, mỗi ngày tên file csv lại khác nhau mà. Tên file được có quy luật là kèm tiền tố là ngày tháng được tạo ra. Không rõ PQ có uyển chuyển được vấn đề này không ?
Nó lấy tất. Bạn xem tài liệu mục Combine
 
Ôi may quá, chủ đề đang tìm kiếm.
Em dựng 1 con SQL Server có cài SSMS được mấy tháng mà chưa làm ăn được gì với nó. Mục đích là dựng database của riêng mình từ các file csv (được kết xuất từ DB khác (tất nhiên em ko đc mò vào cái DB ấy rồi).
Mấy bài em hỏi về ADO cũng là để truy xuất dữ liệu ra Excel và đưa dữ liệu vào DB. Việc truy xuất thì em đã copy đc đoạn code mẫu trên diễn đàn nên tạm thời yên tâm. Riêng việc đưa dữ liệu vào SQL Server thì thật tốn thời gian vì phải đi lòng vòng theo đúng khả năng hạn hẹp của mình. Em đã tạo Job và chỉ chờ cái quan trọng nhất là SP (Stored Procedure) nhưng chưa khi nào làm được dù cũng sục sạo trên Youtube và Google. Tiện đây bác chỉ giúp em với nhé hoặc em mở topic mới thì bác hướng dẫn em. Cảm ơn bác
Bài đã được tự động gộp:


Bác ơi, mỗi ngày tên file csv lại khác nhau mà. Tên file được có quy luật là kèm tiền tố là ngày tháng được tạo ra. Không rõ PQ có uyển chuyển được vấn đề này không ?
Đây xem tạm vậy
Nhưng không có quyền truy xuất .. dến DB thì còn làm được gì vậy, vậy nhờ IT - người quản lý khóa cái đó giúp bạn
 
Thử vậy xem sao

1/ từ Excel lấy dữ liệu File CSV lên cái Array ( Mảng Tính toán gì đó xong )
2/ sau khi có cái mục số 1 xong chạy code lưu cái Array đó vào Server
 
Ôi may quá, chủ đề đang tìm kiếm.

Mấy bài em hỏi về ADO cũng là để truy xuất dữ liệu ra Excel và đưa dữ liệu vào DB. Việc truy xuất thì em đã copy đc đoạn code mẫu trên diễn đàn nên tạm thời yên tâm. Riêng việc đưa dữ liệu vào SQL Server thì thật tốn thời gian vì phải đi lòng vòng theo đúng khả năng hạn hẹp của mình. Em đã tạo Job và chỉ chờ cái quan trọng nhất là SP (Stored Procedure) nhưng chưa khi nào làm được dù cũng sục sạo trên Youtube và Google. Tiện đây bác chỉ giúp em với nhé hoặc em mở topic mới thì bác hướng dẫn em. ]

Cái stored proc. Bulk insert trực tiếp vào SQL Sv nó không đáp ứng yêu cầu của bạn à?
 
Đây xem tạm vậy
Nhưng không có quyền truy xuất .. dến DB thì còn làm được gì vậy, vậy nhờ IT - người quản lý khóa cái đó giúp bạn
Xin lỗi bạn vì phản hồi muộn !
Cái link trên hướng dẫn nhập dữ liệu từ file CSV phải thông qua thao tác thủ công trên SSMS.
Cái em cần là hẹn giờ nó chạy tự động. Tức mình tạo ra 1 SP, gán vào 1 Job rồi đến giờ hẹn hàng ngày nó tự đưa vào database.
Hiện em đang dựng 1 Windows Server (cài trên desktop để vọc) kèm SQL Server và SSMS nên database là của em.
Bài đã được tự động gộp:

Cái stored proc. Bulk insert trực tiếp vào SQL Sv nó không đáp ứng yêu cầu của bạn à?
Xin lỗi bạn vì phản hồi muộn !
Mình muốn SQL Server hàng ngày tự động lấy dữ liệu từ 1 file CSV (tạo Job để Server Agent nó kích hoạt). Hiện tại mình đang dùng Excel VBA lấy dữ liệu từ file CSV vào Cells rồi từ Cells đẩy vào SQL Server.
 
Lần chỉnh sửa cuối:
]

Xin lỗi bạn vì phản hồi muộn !
Mình muốn SQL Server hàng ngày tự động lấy dữ liệu từ 1 file CSV (tạo Job để Server Agent nó kích hoạt). Hiện tại mình đang dùng Excel VBA lấy dữ liệu từ file CSV vào Cells rồi từ Cells đẩy vào SQL Server.

Thì có cái stored proc rồi, bạn chỉ tạo job cho Sql Sv tự chạy. Chỉ có điều là Sql Sv phải mở suốt.
 
Xin lỗi bạn vì phản hồi muộn !
Cái link trên hướng dẫn nhập dữ liệu từ file CSV phải thông qua thao tác thủ công trên SSMS.
Cái em cần là hẹn giờ nó chạy tự động. Tức mình tạo ra 1 SP, gán vào 1 Job rồi đến giờ hẹn hàng ngày nó tự đưa vào database.
Hiện em đang dựng 1 Windows Server (cài trên desktop để vọc) kèm SQL Server và SSMS nên database là của em.
Bài đã được tự động gộp:


Xin lỗi bạn vì phản hồi muộn !
Mình muốn SQL Server hàng ngày tự động lấy dữ liệu từ 1 file CSV (tạo Job để Server Agent nó kích hoạt). Hiện tại mình đang dùng Excel VBA lấy dữ liệu từ file CSV vào Cells rồi từ Cells đẩy vào SQL Server.
Em thì thấy ko có gì có thể tự động được.
Máy mà tắt thì auto kiểu gì?
Chưa kể, Dữ liệu gốc từ database dám chắc là đúng không? Đúng ngày nhưng sai giờ? Đúng giờ nhưng sai ngày? Thì auto thế nào?
 
ko có gì có thể tự động được.
Máy mà tắt thì auto kiểu gì?
Bạn thường ngày dùng máy tính cá nhân nên chưa hình dung rõ.
Chủ thớt đang làm việc với hệ thống máy trạm, máy chủ luôn chạy 24/24. Nếu xấu gặp sự cố là phải chạy máy dự phòng luôn rồi.
Dữ liệu đầu vào chắc chắn chuẩn (nếu hệ thống chưa phát sinh thay đổi mới).
 
Bạn thường ngày dùng máy tính cá nhân nên chưa hình dung rõ.
Chủ thớt đang làm việc với hệ thống máy trạm, máy chủ luôn chạy 24/24. Nếu xấu gặp sự cố là phải chạy máy dự phòng luôn rồi.
Dữ liệu đầu vào chắc chắn chuẩn (nếu hệ thống chưa phát sinh thay đổi mới).
Dạ. Thực tế e cũng chỉ dùng ADO để import dữ liệu. Mà thực tế ko phải lúc nào dữ liệu cũng đúng. Có lúc overload mấy ngày không có. Hjk
 
Bạn thường ngày dùng máy tính cá nhân nên chưa hình dung rõ.
Chủ thớt đang làm việc với hệ thống máy trạm, máy chủ luôn chạy 24/24. Nếu xấu gặp sự cố là phải chạy máy dự phòng luôn rồi.
Dữ liệu đầu vào chắc chắn chuẩn (nếu hệ thống chưa phát sinh thay đổi mới).
Bên mình có vài con máy chủ vật lý, trong đó mình xin được 1 con máy ảo rồi cài Windows Server lên để nghịch linh tinh.
File csv như mình nêu được kết xuất từ Oracle DB (người khác kết xuất và người khác quản trị) nên có thể coi dữ liệu ban đầu tương đối chuẩn. Từ những file csv được kết xuất hàng ngày này mình muốn dựng lên SQL Server DB (hoàn toàn để mình tự học và nghịch thôi chứ không phục vụ cho công việc)

Cảm ơn bạn lần nữa về sự giúp đỡ này
Bài đã được tự động gộp:

Bên mình có vài con máy chủ vật lý, trong đó mình xin được 1 con máy ảo rồi cài Windows Server lên để nghịch linh tinh. Windows Server chạy cực kỳ ổn định.
File csv như mình nêu được kết xuất từ Oracle DB (người khác kết xuất và người khác quản trị) nên có thể coi dữ liệu ban đầu tương đối chuẩn. Từ những file csv được kết xuất hàng ngày này mình muốn dựng lên SQL Server DB (hoàn toàn để mình tự học thôi chứ không ai trông vào thằng ngờ nghệch như mình dựng cho DB để dùng cả)

Cảm ơn bạn lần nữa về sự giúp đỡ này
Bài đã được tự động gộp:

Dạ. Thực tế e cũng chỉ dùng ADO để import dữ liệu. Mà thực tế ko phải lúc nào dữ liệu cũng đúng. Có lúc overload mấy ngày không có. Hjk
Dữ liệu không phải lúc nào cũng đúng. Là như vậy đó.
Mấy đoạn code lắp ghép của anh hoạt động lôm côm lắm, tuy nhiên anh có cài mấy cái SUB gửi email bằng CDO, khi code chạy dính vào mấy bẫy lỗi đơn giản, nó gửi email cho anh để anh kịp thời biết và có thông tin Debug.
 
Lần chỉnh sửa cuối:

Bài viết mới nhất

Back
Top Bottom