我有一个包含来自MySQL的表和数据的导出SQL文件,我想将其导入Sqlite 3 DB.
最好的方法是什么?
只通过sqlite3工具导入文件不起作用.
快速提问:在开发Django项目时使用sqlite并在生产服务器上使用MySQL是个好主意吗?
我知道如果你这样做的话
myTextView.setText("This is on first line \n This is on second line");
Run Code Online (Sandbox Code Playgroud)
然后它会像这样正确显示:
这是在第一行
这是在第二行
当我将该字符串存储在数据库中然后将其设置为视图时,它显示如下:
这是在第一行\n这是在第二行
这是我用来从数据库中提取字符串的代码行:
factView.setText(factsCursor.getString(MyDBAdapter.FACT_COLUMN));
Run Code Online (Sandbox Code Playgroud)
我简单地填充从一个文本文件,其中每行是一个新进入的表,这样的线路是这样的数据库"这是第一行\n这是第二行",并存储为文本.
有没有理由不正确显示\n字符?它必须与数据库中的字符串有关.有什么建议?
我有一个问题,使用sqlite只有在它不存在时创建一个表.基本上,我有一张桌子,我在很长一段时间内都会丢弃并重建一次.但是,如果表已经存在(在我删除并重新映射之前),那么我在第一次尝试插入时会出现以下错误:
Traceback (most recent call last):
File "test.py", line 40, in <module>
remake()
File "test.py", line 31, in remake
insert_record(1)
File "test.py", line 36, in insert_record
c.execute(sql)
sqlite3.OperationalError: no such table: table_name
Run Code Online (Sandbox Code Playgroud)
此时表不存在(由于某种原因),因此下次运行脚本时不会发生错误.基本上,如果我继续运行测试脚本,恰好每一次运行都会导致错误,我很难过为什么 - 但我已经确定创建数据库而不使用if not exists修复问题.我仍然不知道最初的问题是什么,如果有人能指出我正确的方向,我会很感激.测试脚本演示以下问题:
import sqlite3
location = 'data'
table_name = 'table_name'
def init():
global conn
global c
conn = sqlite3.connect(location)
c = conn.cursor()
create_database()
def create_database():
sql = 'create table if not exists ' + table_name + ' (id integer)'
c.execute(sql)
conn.commit()
def create_database2(): …Run Code Online (Sandbox Code Playgroud) 我正在"转换"一个大的(~1.6GB)CSV文件,并将CSV的特定字段插入到SQLite数据库中.基本上我的代码看起来像:
import csv, sqlite3
conn = sqlite3.connect( "path/to/file.db" )
conn.text_factory = str #bugger 8-bit bytestrings
cur = conn.cur()
cur.execute('CREATE TABLE IF NOT EXISTS mytable (field2 VARCHAR, field4 VARCHAR)')
reader = csv.reader(open(filecsv.txt, "rb"))
for field1, field2, field3, field4, field5 in reader:
cur.execute('INSERT OR IGNORE INTO mytable (field2, field4) VALUES (?,?)', (field2, field4))
Run Code Online (Sandbox Code Playgroud)
一切都按照我的预期进行,但例外情况是......它需要花费大量的时间来处理.我编码不正确吗?有没有更好的方法来实现更高的性能并完成我需要的(只需将CSV的几个字段转换为SQLite表)?
**编辑 - 我尝试按照建议直接将csv导入sqlite但事实证明我的文件在字段中有逗号(例如"My title, comma").这导致导入错误.看来手动编辑文件的次数太多了......
还有其他的想法??**
我想限制SQL表中的列值.例如,列值只能是"car"或"bike"或"van".我的问题是你如何在SQL中实现这一点,并且在数据库方面这样做是一个好主意,或者我应该让应用程序限制输入.
我还打算将来添加或删除更多值,例如"truck"
我使用的数据库类型是SQLite和MySQl
我正在创建一个简单的sqlite数据库来存储一些非敏感的客户端信息.我对python + sqlite非常熟悉,并且更喜欢在这个项目上坚持使用这个组合.我想创建一个简单的GUI界面,用于数据输入和数据库搜索......与MS Access提供的内容非常相似.我希望我的妻子能够轻松地输入/搜索数据,因此PHPmyadmin风格的东西是不可能的.
我知道我可以放弃并获得MS Access,但如果有理由可能只是自己编写代码以便它可以在我的计算机上运行(*nix)并且是灵活的(所以我以后可以将它与Web应用程序和我们的集成智能手机.)
您是否可以开发推荐任何可以轻松实现此目的的接口/包/等(最好是pythonic)?
谢谢!
我开始使用Android中的SQLite和数据库,我刚刚发现了这个问题.我已经阅读了很多类似的问题,但我还没有找到解决方案.
这是我得到的错误:
E/AndroidRuntime(529):引起:android.database.sqlite.SQLiteException:没有这样的表:ligas_bd :,编译时:SELECT*FROM ligas_bd
这是我的代码.
DBHelper myDbHelper = new DBHelper(this);
myDbHelper = new DBHelper(this);
try {
myDbHelper.createDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
myDbHelper.open();
SQLiteDatabase db = null;
db = myDbHelper.getWritableDatabase();
String[] args = new String[] {""};
Cursor c = db.rawQuery(" SELECT * FROM ligas_bd", args); <---- Error in this line
if (c.moveToFirst()) {
do {
String cod = c.getString(0);
String nombre = c.getString(1);
String flag = c.getString(0);
String cod_url = …Run Code Online (Sandbox Code Playgroud) 我编写了一个java应用程序,它偶尔会将事件从多个线程记录到SQLite数据库中.我注意到我可以通过同时生成少量事件来相对容易地触发SQLite的"数据库锁定"错误.这促使我编写了一个模拟最坏情况行为的测试程序,我很惊讶SQLite在这个用例中的表现有多糟糕.下面发布的代码只是将五条记录添加到数据库中,首先按顺序获取"控制"值.然后同时添加相同的五个记录.
import java.sql.*;
public class Main {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people");
stat.executeUpdate("create table people (name, occupation)");
conn.close();
SqlTask tasks[] = {
new SqlTask("Gandhi", "politics"),
new SqlTask("Turing", "computers"),
new SqlTask("Picaso", "artist"),
new SqlTask("shakespeare", "writer"),
new SqlTask("tesla", "inventor"),
};
System.out.println("Sequential DB access:");
Thread threads[] = new Thread[tasks.length];
for(int i = 0; i < tasks.length; i++)
threads[i] = new Thread(tasks[i]);
for(int i = 0; i …Run Code Online (Sandbox Code Playgroud) 我是以编程方式获取一堆数据集,其中许多都有愚蠢的名称,以数字开头,并有特殊字符,如减号.因为没有一个数据集特别大,我希望利益R对数据类型做出最好的猜测,我(ab)使用dplyr将这些表转储到SQLite中.
我使用方括号来逃避可怕的表名,但这似乎不起作用.例如:
data(iris)
foo.db <- src_sqlite("foo.sqlite3", create = TRUE)
copy_to(foo.db, df=iris, name="[14m3-n4m3]")
Run Code Online (Sandbox Code Playgroud)
这会导致错误消息:
Error in sqliteSendQuery(conn, statement, bind.data) : error in statement: no such table: 14m3-n4m3
如果我选择一个合理的名称,这是有效的.但是,由于种种原因,我真的很想保留繁琐的名字.我也可以直接从sqlite创建这样一个命名不好的表:
sqlite> create table [14m3-n4m3](foo,bar,baz);
sqlite> .tables
14m3-n4m3
Run Code Online (Sandbox Code Playgroud)
如果没有深入破解,看起来dplyr正在以某种方式处理方括号,这是我无法弄清楚的.我怀疑这是一个错误,但我想先在这里检查,以确保我没有遗漏一些东西.
编辑:我忘了提到我只是将janky名称直接传递给dplyr的情况.这错误如下:
library(dplyr)
data(iris)
foo.db <- src_sqlite("foo.sqlite3", create = TRUE)
copy_to(foo.db, df=iris, name="14M3-N4M3")
Error in sqliteSendQuery(conn, statement, bind.data) :
error in statement: unrecognized token: "14M3"
Run Code Online (Sandbox Code Playgroud)