【问题标题】:Is it possible to tell Sqlite to ignore trailing field separator when using import command?使用导入命令时是否可以告诉 Sqlite 忽略尾随字段分隔符?
【发布时间】:2025-12-26 10:35:16
【问题描述】:

我想加载一个带有由管道分隔的文本文件的表格

Table
--------------------------

Id + Employee + Department

--------------------------

文件

0|Some Name|Some department|
1|Another Name|Another department|

我使用 .separator 命令设置“|”分隔器 然后执行 .import 命令。

我收到以下错误 错误:EMP.TXT 第 1 行:预期有 3 列数据,但找到了 4 列。

我想知道 sqlite3 中是否有一些选项可以忽略尾随管道。

【问题讨论】:

    标签: import sqlite separator csv


    【解决方案1】:

    您可以使用虚拟列导入临时表:

    CREATE TEMP TABLE DummyTable(id, emp, dep, nothing);
    .import importfile DummyTable
    INSERT INTO MyTable SELECT id, emp, dep FROM DummyTable;
    DROP TABLE DummyTable;
    

    【讨论】:

      【解决方案2】:

      您可以在导入之前删除多余的管道:

      < importfile sed 's/|$//' | sqlite3 my.db ".import /dev/stdin MyTable" 
      

      【讨论】:

      • 谢谢!但我使用的是 Windows,并且没有安装像 sed 这样的强大替代工具。
      • 您可以使用包含sed 的MSYS/MinGW。我发现 Git for Windows 附带的 Git MinGW 环境特别容易安装和使用。