यदि आप नोडजेएस चला रहे हैं तो मैंने एक एनओडीजेएस आयात स्क्रिप्ट बनाई है और आप डेटा निम्न रूप में हैं (दोहरी बोली + अल्पविराम और \ n नई पंक्ति)
INSERT INTO <your_table> VALUEs( **CSV LINE **)
इसे http: // localhost: 5000 / import पर चलाने के लिए कॉन्फ़िगर किया गया है ।
मैं लाइन से लाइन जाता हूं और क्वेरी स्ट्रिंग बनाता हूं
"city","city_ascii","lat","lng","country","iso2","iso3","id"
"Tokyo","Tokyo","35.6850","139.7514","Japan","JP","JPN","1392685764",
...
server.js
const express = require('express'),
cors = require('cors'),
bodyParser = require('body-parser'),
cookieParser = require('cookie-parser'),
session = require('express-session'),
app = express(),
port = process.env.PORT || 5000,
pj = require('./config/config.json'),
path = require('path');
app.use(bodyParser.json());
app.use(cookieParser());
app.use(cors());
app.use(
bodyParser.urlencoded({
extended: false,
})
);
var Import = require('./routes/ImportRoutes.js');
app.use('/import', Import);
if (process.env.NODE_ENV === 'production') {
// set static folder
app.use(express.static('client/build'));
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
}
app.listen(port, function () {
console.log('Server is running on port: ' + port);
});
ImportRoutes.js
const express = require('express'),
cors = require('cors'),
fs = require('fs-extra'),
byline = require('byline'),
db = require('../database/db'),
importcsv = express.Router();
importcsv.use(cors());
importcsv.get('/csv', (req, res) => {
function processFile() {
return new Promise((resolve) => {
let first = true;
var sql, sqls;
var stream = byline(
fs.createReadStream('../PATH/TO/YOUR!!!csv', {
encoding: 'utf8',
})
);
stream
.on('data', function (line, err) {
if (line !== undefined) {
sql = 'INSERT INTO <your_table> VALUES (' + line.toString() + ');';
if (first) console.log(sql);
first = false;
db.sequelize.query(sql);
}
})
.on('finish', () => {
resolve(sqls);
});
});
}
async function startStream() {
console.log('started stream');
const sqls = await processFile();
res.end();
console.log('ALL DONE');
}
startStream();
});
module.exports = importcsv;
db.js कॉन्फिग फाइल है
const Sequelize = require('sequelize');
const db = {};
const sequelize = new Sequelize(
config.global.db,
config.global.user,
config.global.password,
{
host: config.global.host,
dialect: 'mysql',
logging: console.log,
freezeTableName: true,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000,
},
}
);
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
डिस्क्लेमर: यह एक सटीक समाधान नहीं है - मैं इसे केवल उन देवों के लिए पोस्ट कर रहा हूं, जिनके पास समयरेखा के तहत आयात करने के लिए बहुत सारे डेटा हैं और इस हास्यास्पद मुद्दे का सामना कर रहे हैं। मैंने इस पर बहुत समय खो दिया है और मैं एक और देव को उसी खोए हुए समय को बख्शने की उम्मीद करता हूं।