【发布时间】:2019-03-15 00:03:36
【问题描述】:
我必须将 CSV 文件中存在的 100 多条记录插入 PostgreSQL 数据库。所以我尝试了下面提到的代码,它正在从文件中读取数据但无法将它们插入到 PostgreSQL 表中,那么还有其他方法可以执行此操作吗?比如csvtojson之类的?
const csv = require('csv');
var csvParser = require('csv-parse');
Controller.uploadCsv = async(data) => {
fs.createReadStream(data.path)
.pipe(csvParser({
delimiter: '\t',
endLine: '\n',
escapeChar: '"',
enclosedChar: '"'
}))
.on('data', function(data) {
console.log(data)// returning in console mentioned below
console.log(data.name) // is undefined
const add = {
name: data.name,
address: data.address,
phoneNo: data.phoneNumber,
email: data.email,
created_at: new Date(),
updated_at: new Date()
};
const result = await models.table.create(add);
})
.on('end', function(data) {
console.log('reading finished')
})
}
路由器.js
router.post('/file', upload.single('file'),(req, res, next) => {
Controller.uploadCsv(req.file)
.then((result) => res.json(result))
.catch(next)
})
控制台数据
[ 'name',
'address'
'phoneNumber',
'email',
'created_at',
'updated_at']
[ 'aaa',
'delhi',
'1102558888',
'test@gmail.com',
'2017-10-08T06:17:09.922Z',
'2018-10-08T06:17:09.922Z',]
[ 'Oreo',
'bgl',
'1112589633',
'test123@gmail.com',
'2017-10-08T06:17:09.922Z',
'2018-10-08T06:17:09.922Z' ]
【问题讨论】:
-
你必须通过代码来做到这一点吗?你不能直接打开 pgAdmin 并以这种方式导入吗?简单了 10000%...stackoverflow.com/questions/19400173/…
-
您也可以使用
psql。 (例如psql -h $SERVER_IP -d $DB -U $USERNAME -c "\copy tmp_special_phrases(word,Key,Value,Plural) from './special_phrases.csv' with delimiter as ',' CSV HEADER") -
@dvsoukup 它只能通过代码完成,而不是来自 pgAdmin 面板
标签: node.js postgresql csv sequelize-cli