Viết tập lệnh PowerShell đơn giản để sao chép dữ liệu CSV thành cơ sở dữ liệu MySQL.
Các cmdlet CDATA cho CSV cung cấp quyền truy cập trực tiếp vào dữ liệu CSV từ bên trong PowerShell. Sử dụng các tập lệnh PowerShell, bạn có thể dễ dàng tự động hóa các tác vụ thông thường như sao chép dữ liệu. Bài viết này sẽ đi qua bằng cách sử dụng các cmdlet CDATA cho CSV và CMDLET CDATA cho MySQL trong PowerShell để sao chép dữ liệu CSV thành cơ sở dữ liệu MySQL.
Sau khi có được các thuộc tính kết nối cần thiết, việc truy cập dữ liệu CSV trong PowerShell và chuẩn bị sao chép bao gồm bốn bước cơ bản.
Thuộc tính DataSource phải được đặt thành một tên thư mục địa phương hợp lệ.DataSource property must be set to a valid local folder name.
Ngoài ra, chỉ định thuộc tính Bao gồm các tệp để làm việc với các tệp văn bản có các tiện ích mở rộng khác với .csv, .tab hoặc .txt. Chỉ định nhiều tiện ích mở rộng tệp trong danh sách được phân tách bằng dấu phẩy. Bạn cũng có thể đặt các thuộc tính mở rộng tương thích với trình điều khiển Microsoft Jet Ole DB 4.0. Ngoài ra, bạn có thể cung cấp định dạng của các tệp văn bản trong tệp lược đồ.ini.IncludeFiles property to work with text files having extensions that differ from .csv, .tab, or .txt. Specify multiple file extensions in a comma-separated list. You can also set Extended Properties compatible with the Microsoft Jet OLE DB 4.0 driver. Alternatively, you can provide the format of text files in a Schema.ini file.
Đặt người dùng thành true nếu bạn đang xóa hoặc cập nhật trong CSV. Điều này sẽ tạo ra một cột mới với tên Rownumber sẽ được sử dụng làm khóa cho bảng đó.UseRowNumbers to true if you are deleting or updating in CSV. This will create a new column with the name RowNumber which will be used as key for that table.
Thu thập dữ liệu CSV
Cài đặt mô -đun:
Install-Module CSVCmdlets
Kết nối với CSV:
$csv = Connect-CSV -DataSource $DataSource
Lấy dữ liệu từ một tài nguyên cụ thể:
$data = Select-CSV -Connection $csv -Table "Customer"
Bạn cũng có thể sử dụng CMDLET Invoke-CSV để thực hiện các câu lệnh SQL-92 thuần túy:
$data = Invoke-CSV -Connection $csv -Query 'SELECT * FROM Customer WHERE FirstName = @FirstName' -Params @{'@FirstName'='Bob'}
-
Lưu danh sách các tên cột từ dữ liệu được trả về.
$columns = [$data | Get-Member -MemberType NoteProperty | Select-Object -Property Name].Name
Chèn dữ liệu CSV vào cơ sở dữ liệu MySQL
Với các tên dữ liệu và cột được thu thập, bạn đã sẵn sàng sao chép dữ liệu thành cơ sở dữ liệu MySQL.
Cài đặt mô -đun:
Install-Module CSVCmdlets
Kết nối với CSV:
$csv = Connect-CSV -DataSource $DataSource
-
Lấy dữ liệu từ một tài nguyên cụ thể:
$data = Select-CSV -Connection $csv -Table "Customer"
Bạn cũng có thể sử dụng CMDLET Invoke-CSV để thực hiện các câu lệnh SQL-92 thuần túy:
Ghi chú
Khi bạn đã kết nối với CSV và MySQL trong PowerShell, bạn có thể ống dẫn kết quả để thực hiện sao chép trong một dòng duy nhất:
0SHOW VARIABLES LIKE "secure_file_priv";
Nếu bạn muốn sao chép dữ liệu CSV thành cơ sở dữ liệu khác bằng mô-đun PowerShell khác, bạn sẽ muốn loại trừ các cột, kết nối và các cột bảng khỏi dữ liệu được trả về bởi bộ phận chọn lọc-CSV vì các cột đó được sử dụng để giúp dữ liệu ống từ một Cmdlet cdata cho người khác:
1SHOW VARIABLES LIKE "secure_file_priv";
Trong bài viết trước, tôi đã đề cập đến việc nhập tệp SQL trong MySQL [sử dụng CMD hoặc PowerShell] nhưng bây giờ trong bài viết này, tôi đã đề cập đến cách chúng ta có thể nhập tệp CSV trong MySQL bởi một.
Hãy xem xét chúng tôi đang sử dụng tệp CSV dưới đây trong ví dụ này
Nhập CSV vào MySQL bằng truy vấn
Hãy xem ví dụ dễ dàng và đây là truy vấn để lưu tệp CSV trong bảng MySQL
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Orders.csv' /*file location*/
INTO TABLE orderdetails.orders
FIELDS TERMINATED BY ',' /* To make the delimiter a tab, use --fields-terminated-by='\t' */
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
Bạn có thể thấy chúng tôi có vị trí tệp như '
SHOW VARIABLES LIKE "secure_file_priv";
2' Đây là becasue, tôi đã chuyển tệp CSV của mình sang vị trí 'SHOW VARIABLES LIKE "secure_file_priv";
3' nếu không tôi bị lỗiMã lỗi: 1290. Máy chủ MySQL đang chạy với tùy chọn-Secure-File-Priv để nó không thể thực thi câu lệnh này
Để biết vị trí MySQL Secure_File_Priv của bạn, bạn có thể thực hiện truy vấn nàyto know your MySQL secure_file_priv location, you can execute this query
SHOW VARIABLES LIKE "secure_file_priv";
Đây là hình ảnh GIF, hiển thị trước khi chạy đầu ra bảng truy vấn và sau khi chạy truy vấn
Để biến dấu phân cách thành một tab, hãy sử dụng-trường kết thúc-by = '\ t' thay vì ',' trong truy vấn trên.
Nhập CSVFile vào MySQL bằng cách sử dụng MySQL Workbench
Nếu phương thức trên, không hoạt động cho bạn vì một số lý do, bạn cũng có thể dễ dàng nhập tệp CSV bằng cách sử dụng MySQL Workbench trong bảng cơ sở dữ liệu. Hãy xem cách chúng ta có thể làm điều đó từng bước.
Bước 1: Mở rộng cơ sở dữ liệu trong MySQL Workbench và sau đó chọn bảng trong đó chúng tôi muốn nhập CSV, sau đó nhấp chuột phải vào nó và sau đó chọn "Trình hướng dẫn nhập dữ liệu bảng" Expand Database in MySQL Workbench and then select Table in which we want to import CSV, then right-click on it and then select "Table Data import Wizard"
Bước 2: Một cửa sổ sẽ mở, nơi chúng tôi cần chọn tệp CS để nhập, để bạn có thể duyệt và chọn tệp, như trong hình ảnh A Window will open, where we need to select cs file to import, so you can browse and select the file, as shown in the image
Bước 3: Bây giờ, trong màn hình tiếp theo, Nhập trình hướng dẫn sẽ yêu cầu bạn chọn từ bảng đã tạo hoặc tạo một bảng mới, vì chúng tôi đang sử dụng một bản chúng tôi sẽ chọn nó và nhấp vào "Tiếp theo" Now, in the next screen, Import Wizard will ask you to choose from already created table or create new one, since we are using already created one we will choose it and click "Next"
Bước 4: Trong màn hình tiếp theo, Nhập Wizard hiển thị các tiêu đề tệp và cột bảng đích của Nguồn [CSV], mà chúng ta có thể ánh xạ, mặc dù nó đã được ánh xạ, nhưng chúng ta có thể thay đổi ánh xạ nếu cần, một khi chúng ta được thực hiện, hãy nhấp vào "Tiếp theo" In the next screen, import wizard shows source [csv] file headers and destination table columns, which we can map, although it is already mapped, but we can change mapping if needed, once we are done click "Next"
Bước 5: Chúng tôi gần như đã hoàn thành, Nhập Wizard hiển thị nhiệm vụ sẽ được thực hiện, chúng tôi không cần phải làm bất cứ điều gì trong màn hình này, chỉ cần nhấp vào "Tiếp theo" We are almost done, import wizard shows the task which will be performed, we don't need to do anything in this screen, just click on "Next"
Bước 6: Nhập được hoàn thành trong vài giây và bạn sẽ thấy thông báo thành công trong màn hình tiếp theo, như được hiển thị bên dưới Import is completed in few seconds, and you will see success message in next screen, as shown below
Bước 7: Đó là nó, chúng tôi đã hoàn tất, bạn có thể đóng cửa sổ nhập và bây giờ chúng tôi có thể thấy bảng cơ sở dữ liệu MySQL của chúng tôi, bạn sẽ thấy tệp CSV được nhập thành công. That's it, we are done, you can close the import window and now we can see our mysql database table, you will see CSV file is imported successfully.
Vì vậy, đây là 2 phương pháp để nhập tệp CSV trong bảng cơ sở dữ liệu MySQL.
Bạn cũng có thể thích đọc:
Mã lỗi: 1175 - Bạn đang sử dụng chế độ cập nhật an toàn
Nhập CSV vào SQL Server [với truy vấn hoặc không có truy vấn bằng SSMS]
Chuyển đổi CSV thành JSON bằng JavaScript
Danh sách nối tiếp cho JSON trong C#
Cách kiểm tra phiên bản PowerShell đã cài đặt
Trim [], ltrim [], rtrim [] hàm trong SQL Server
Phần mềm cơ sở dữ liệu nguồn mở tốt nhất [DBMS]
Nhận ngày từ DateTime trong SQL Server
Danh sách phiên bản Microsoft SQL Server
Tải xuống và cài đặt SQL Server Management Studio [từng bước]
Tải xuống và cài đặt SQL Server [Quy trình từng bước]