Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何轻松地将数百个条目插入到由特定字符分隔的SQLite数据库中?_Python_Sql_Node.js_Sqlite - Fatal编程技术网

Python 如何轻松地将数百个条目插入到由特定字符分隔的SQLite数据库中?

Python 如何轻松地将数百个条目插入到由特定字符分隔的SQLite数据库中?,python,sql,node.js,sqlite,Python,Sql,Node.js,Sqlite,我是SQLite的新手,所以请容忍我。我有一个已建立的SQLite数据库,其中已经有一个表,其中有四列(名字、姓氏、年龄、位置)。我有一个这样的列表,我想添加到数据库中: ABC | DEF | 16 | Ontario, Canada BCD | EFG | 17 | California, United States CDE | FGH | 18 | London, United Kingdom (以此类推,数百个书面条目以|分隔并以纯文本形式保存。) 是否有一种简单的方法将它们全部添加到

我是SQLite的新手,所以请容忍我。我有一个已建立的SQLite数据库,其中已经有一个表,其中有四列(名字、姓氏、年龄、位置)。我有一个这样的列表,我想添加到数据库中:

ABC | DEF | 16 | Ontario, Canada
BCD | EFG | 17 | California, United States
CDE | FGH | 18 | London, United Kingdom
(以此类推,数百个书面条目以|分隔并以纯文本形式保存。)


是否有一种简单的方法将它们全部添加到SQLite数据库?可以从文本文件中读取,也可以将条目复制并粘贴到文本框中。可能通过SQL控制台本身,或Python或Node.js脚本,或其他易于在PC上安装或在浏览器中运行的工具。对于一个项目来说,这只是本地的。谢谢

是的,实际上有一些在线工具可以做到这一点 首先,您需要将其转换为csv格式,在您的情况下,这只是更改分隔符并为其提供一个标题和使用工具


或者这个java工具:

您可以使用
executemany
对一系列参数执行此操作,在本例中,是一个逐行生成文本文件的函数

def iter_data():
    with open("some_file.txt", "r") as fin:
        for row in fin:
            yield row.split("|")


con = sqlite3.connect("some_db")
query = """
INSERT INTO my_table(first_name, last_name, age, location) VALUES (?, ?, ?, ?)
"""

with con:
    conn.executemany(query, iter_data())

con.close()

你可以阅读更多关于这方面的内容。您可能需要包括正确的错误处理、类型强制等。。但希望您了解需要做什么。

我有一个针对NodeJS和Sqlite的解决方案:

var inputFileName='input.txt';
var dbName='sample.db';


var fs = require('fs');
const sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(dbName);
var input = fs.readFileSync(inputFileName);


//creates the table
function createDB(){
  db.run(`CREATE TABLE IF NOT EXISTS mytable(attr1 VARCHAR(64), attr2 VARCHAR(64), attr3 VARCHAR(64), attr4 VARCHAR(64))`);
}

//insert a single line
function insertSingleRow(param1, param2, param3, param4){
  var stmt=db.prepare(`INSERT INTO mytable(attr1, attr2, attr3, attr4) VALUES (?,?,?,?)`);
  stmt.run(param1, param2, param3, param4);
  stmt.finalize();
  console.log("Row inserted");
}

//select and print all record from the table
function sqlSelect(){
  db.all("SELECT attr1, attr2, attr3, attr4 FROM mytable", function(err, rows) {
    rows.forEach(function (row) {
      console.log(row.attr1, row.attr2, row.attr3, row.attr4);
    })
    });
}

//parses the input file and inserts all line into the table
function parseFileAndInsert(){
  var lines=input.toString().split("\n");
  for(i in lines){
    if(i<lines.length-1){
      var inputValues=lines[i].split("|");
      insertSingleRow(inputValues[0], inputValues[1], inputValues[2], inputValues[3]);
    }
  }
}

//executes the table creation, parsing of the file
db.serialize(function() {
  createDB();
  parseFileAndInsert();

  // for evaluation
  // sqlSelect();
});
var-inputFileName='input.txt';
var dbName='sample.db';
var fs=需要('fs');
const sqlite3=require('sqlite3').verbose();
var db=new sqlite3.Database(dbName);
var input=fs.readFileSync(inputFileName);
//创建表
函数createDB(){
run(`CREATE TABLE IF NOT EXISTS mytable(attr1 VARCHAR(64)、attr2 VARCHAR(64)、attr3 VARCHAR(64)、attr4 VARCHAR(64))`);
}
//插入一行
函数insertSingleRow(参数1、参数2、参数3、参数4){
var stmt=db.prepare(`INSERT-INTO-mytable(attr1,attr2,attr3,attr4)值(?,,,?)`);
stmt.run(参数1、参数2、参数3、参数4);
stmt.finalize();
控制台日志(“插入行”);
}
//从表中选择并打印所有记录
函数sqlSelect(){
db.all(“从mytable中选择attr1、attr2、attr3、attr4”,函数(err、rows){
rows.forEach(函数(行){
log(row.attr1、row.attr2、row.attr3、row.attr4);
})
});
}
//解析输入文件并将所有行插入表中
函数parseFileAndInsert(){
var lines=input.toString().split(“\n”);
对于(i行){

如果(iMost)数据库系统能够“转储”一个表作为
CREATE table
查询和一系列
INSERT
s。这些命令可以直接输入SQLite命令行工具,几乎不需要任何处理。有没有办法不使用逗号分隔符?