В этом руководстве вы научитесь импортировать данные из CSV-файла в базу данных SQL Server с помощью программы Node.js.
Это руководство начинается с того места, где закончилось руководство по вставке данных в таблицу из Node.js.
Мы импортируем данные об авторах из CSV-файла в таблицу «Авторы».
Шаг 1. Откройте терминал и установите пакет csv-parse:
npm install csv-parse
Пакет csv-parse позволяет преобразовывать входные данные CSV в массивы или объекты JavaScript.
Шаг 2. Создайте новый каталог с именем data в каталоге проекта:
mkdir data
Шаг 3. Создайте новый CSV-файл с именем authors.csv, содержащий данные об авторах внутри каталога данных:
FirstName,LastName,BirthDate Agatha,Christie,1890-09-15 Mark,Twain,1835-11-30 George,Orwell,1903-06-25 Jane,Austen,1775-12-16 Charles,Dickens,1812-02-07 F. Scott,Fitzgerald,1896-09-24 Ernest,Hemingway,1899-07-21 Leo,Tolstoy,1828-09-09 Virginia,Woolf,1882-01-25 J.K.,Rowling,1965-07-31 J.R.R.,Tolkien,1892-01-03 Stephen,King,1947-09-21 Harper,Lee,1926-04-28 H.G.,Wells,1866-09-21 Herman,Melville,1819-08-01 Mary,Shelley,1797-08-30 Oscar,Wilde,1854-10-16 Emily,Bronte,1818-07-30 J.D.,Salinger,1919-01-01 Kurt,Vonnegut,1922-11-11
CSV-файл содержит три столбца: имя, фамилия и дата рождения, а также 20 авторов.
Шаг 4. Создайте новый файл read-csv.js, в котором будет храниться код для анализа данных authors.csv:
import { createReadStream } from 'fs';
import { parse } from 'csv-parse';
export async function readCSV(filePath) {
const results = [];
return new Promise((resolve, reject) => {
// Create a read stream for the CSV file
createReadStream(filePath)
// Use columns option to automatically map CSV headers to object keys
.pipe(parse({ columns: true }))
.on('data',(data) => {
results.push({
firstName: data.FirstName,
lastName: data.LastName,
birthDate: data.BirthDate,
});
})
.on('end',() => resolve(results))
.on('error',(error) => reject(error));
});
}
Как это работает.
Сначала импортируйте функции createReadStream и parse из fs и csv-parse соответственно:
import { createReadStream } from 'fs';
import { parse } from 'csv-parse';
Во-вторых, создайте новую функцию readCSV, которая считывает данные из CSV-файла, указанного путем к файлу:
export async function readCSV(filePath) {
// ...
Также экспортируйте функцию с помощью оператора export.
В-третьих, проанализируйте CSV-файл с помощью функции parse. Аргумент { columns: true } указывает функции parse автоматически сопоставлять заголовки CSV с ключами объектов:
.pipe(parse({ columns: true }))
Получив данные, мы вручную создаем объект автора с тремя ключами firstName, lastName и birthDate, которые сопоставляются со свойствами FirstName, LastName и BirthDate соответственно:
.on('data',(data) => {
results.push({
firstName: data.FirstName,
lastName: data.LastName,
birthDate: data.BirthDate,
});
})
Шаг 5. Измените insert-many.js, чтобы экспортировать функцию insertAuthors с помощью именованного экспорта:
import sql from 'mssql';
import { config } from './config.js';
const insertAuthors = async(authors) => {
try {
// Connect to the database
await sql.connect(config);
// Construct the insert query
let query = 'INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES ';
// Build the values part of the query
const values = authors
.map(
({ firstName, lastName, birthDate }) =>
`('${firstName}', '${lastName}', '${birthDate}')`
)
.join(', ');
// Complete the query
query += values;
// Execute the query
await sql.query(query);
console.log(`${authors.length} authors were inserted successfully!`);
} catch(err) {
console.error('Error inserting authors:', err);
} finally {
// Close the database connection
await sql.close();
}
};
export { insertAuthors };
Шаг 6. Измените файл index.js, который считывает данные из файла ./data/authors.csv и вставляет их в таблицу Authors:
import { readCSV } from './read-csv.js';
import { insertAuthors } from './insert-many.js';
const filePath = 'data/authors.csv';
try {
const authors = await readCSV(filePath);
await insertAuthors(authors);
} catch(err) {
console.error(err);
}
Как это работает.
Сначала импортируйте файл функции readCSV из модуля read-csv.js и функцию insertAuthors из модуля insert-many.js:
import { readCSV } from './read-csv.js';
import { insertAuthors } from './insert-many.js';
Во-вторых, считайте данные из файла authors.csv, вызвав функцию readCSV():
const authors = await readCSV(filePath);
Функция readCSV() возвращает массив объектов автора.
В-третьих, вставьте авторов из массива в таблицу Authors, вызвав функцию insertAuthors:
await insertAuthors(authors);
Шаг 7. Откройте терминал и выполните следующую команду для импорта данных из файла data/authors.csv в таблицу Authors:
npm start
Проверьте вставки
Шаг 1. Откройте SQL Server Management Studio(SSMS) и подключитесь к SQL Server.
Шаг 2. Выполните следующий оператор SELECT для запроса данных из таблицы Authors:
SELECT * FROM Authors;

Вывод показывает, что данные из CSV-файла успешно импортированы в таблицу «Авторы».
Загрузите исходный код проекта
Загрузите исходный код проекта
Краткое содержание
- Используйте пакет csv-parse для чтения данных из CSV-файла и выполнения оператора INSERT для вставки строк в таблицу в базе данных SQL Server.
