如何使用node.js将数组存储到sqlite中

问题描述 投票:0回答:1

大家!有csv文件,我解析它(使用fast-csv),现在它存储为数组。现在我想使用node.js将此数组替换为SQLite DB。有人能告诉我我该怎么办?这是我的代码:

 class Person {
     getData(filename) {
            return new Promise((resolve, reject) => {
                let arrayData = [];
                const csv = require('fast-csv');
                csv.fromPath(`${filename}.csv`, {
                    headers: true,
                    strictColumnHandling: true,
                    delimiter: ',',
                    ignoreEmpty: true
                })
                    .on('data', data => arrayData.push(data))
                    .on('end', () => {
                        resolve({
                            arrayData,
                            title: filename,
                            columnCountData: Object.keys(arrayData[0]).length,
                            rowCountData: arrayData.length + 1, // data plus header
                        });
                    })
                    .on('error', (error) => {
                      reject(error);
                    });

            });
        }
    }
    let person = new Person();
    person.getData('person')
          .then((array) => {
              const sqlite3 = require('sqlite3').verbose();
    // open the database
              let db = new sqlite3.Database('./ook.db',sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => {
                  if (err) {
                      console.error(err.message);
                  }
                  console.log("DB is connected");
              });
              db.close((err) => {
                  if (err) {
                      console.error(err.message);
                  }
                  console.log('Close the database connection.');
              });
              console.log(array);
          })
          .catch((error) => {
              console.log('все накрылось, потому что: ', error)
          });
node.js sqlite csv
1个回答
0
投票

SQLite没有本机数组类型,但它支持Unicode文本和blob:https://www.sqlite.org/datatype3.html

因此,您需要将数组转换为这些格式之一,并将其​​存储在数据库中。或者,更方便的是,只需读入整个文件,然后在解析之前将其存储在db中。但要注意,这可能(或可能不是,取决于一个数据)浪费存储空间,如果这是一个问题,可能首选某种类型的自定义二进制序列化。

注意:default max length of strings and blobs是10亿,并且您不能将该限制设置为高于2 ^ 31-1,但这在实践中不应该是一个问题,您不应该存储数据库中的大对象。

© www.soinside.com 2019 - 2024. All rights reserved.