代码之家  ›  专栏  ›  技术社区  ›  I82Much

SQLite-从csv文件向数据库中插入带有换行符的字符串

  •  6
  • I82Much  · 技术社区  · 14 年前

    如果手动插入,则可以显示新行:

    INSERT INTO "LOGENTRY" VALUES(5,40,'PLACE','line1
    line2
    
    line4
    ',1283990533315,'4A','TEXT','',NULL);
    

    这可能吗?还是手动插入的唯一方法?

    4 回复  |  直到 14 年前
        1
  •  5
  •   Iain Samuel McLean Elder    11 年前

    您的问题是csv格式:sqlite不支持包含换行符的值。

    在sqlite方言中:

    • 逗号分隔字段

    • 双引号可用于对包含逗号的字段进行分组。

    • 新行分隔记录

    您要么需要转义/删除新行,要么使用其他更合适的文件格式。

    以下(sed)正则表达式将“删除”不需要的换行符

    s/\(,"[^",]*\)$/\1\1/g
    
        2
  •  3
  •   Igor    14 年前

    http://www.mail-archive.com/sqlite-users@sqlite.org/msg43557.html

    是的,你可以:

    SQLite version 3.6.14.2
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite> create table x ( a );
    sqlite> INSERT INTO x VALUES('line1
       ...> line2');
    sqlite> SELECT a FROM x;
    line1
    line2
    sqlite> SELECT hex(a) FROM x;
    6C696E65310A6C696E6532
    sqlite>
    

    希望有帮助!

        3
  •  0
  •   Thomas Mueller    14 年前

    db.execSQL("INSERT INTO LOGENTRY " +
        "VALUES(?, ?, ?, ?, ?, ?, ?, '', NULL)", 
        new Object[]{5, 40, place, text, num, x, t2});
    
        4
  •  -1
  •   bginfo4x    12 年前

    请尝试“echo-n”,或使用类似echo“file”| tr'\n''