从 csv 导入时如何获取记录为 NULL 的缺失值

2024-03-08

我有多个大型 csv 文件,每个文件在许多地方都有缺失值。当我将 csv 文件导入 SQLite 时,我希望将缺失值记录为 NULL,因为另一个应用程序希望缺失数据由 NULL 指示。我当前的方法无法产生预期的结果。

CSV 文件 (test.csv) 示例如下:

12|gamma|17|delta
67||19|zeta
96|eta||theta
98|iota|29|

第一行已完成;其他每一行都有(或旨在显示!)一个缺失的项目。当我使用以下方式导入时:

.headers on
.mode column
.nullvalue NULL
CREATE TABLE t (
  id1     INTEGER  PRIMARY KEY,
  a1      TEXT,
  n1      INTEGER,
  a2      TEXT
);
.import test.csv t
SELECT
  id1, typeof(id1),
  a1,  typeof(a1),
  n1,  typeof(n1),
  a2,  typeof(a2)
FROM t;

结果是

id1   typeof(id1)  a1      typeof(a1)  n1  typeof(n1)  a2      typeof(a2)
----  -----------  ------  ----------  --  ----------  ------  ----------
12    integer      gamma     text      17  integer     delta   text                      
67    integer                text      19  integer     zeta    text                      
96    integer      eta       text          text        theta   text                      
98    integer      iota      text      29  integer             text

所以缺失的值变成了文本。我希望获得有关如何确保所有缺失值变为 NULL 的指导。


sqlite3 将值作为文本导入,并且似乎没有办法让它将空值视为空值。

但是,您可以在导入后自行更新表,将空字符串设置为空,例如

UPDATE t SET a1=NULL WHERE a1='';

对每一列重复此操作。

您还可以为此类更新创建触发器:

CREATE TRIGGER trig_a1 AFTER INSERT ON t WHEN new.a1='' BEGIN
  UPDATE t SET a1=NULL WHERE rowid=new.rowid;
END;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 csv 导入时如何获取记录为 NULL 的缺失值 的相关文章

  • 如何在SQLite中的两个表之间复制数据?

    我有两个具有不同列的表 如下所示 table1 id title name number address table2 id phone name address 如何将数据 名称 地址 从表 1 复制到表 2 我的问题有两种情况 第一 t
  • 指定的 sqlite3 gem 未加载

    虽然我对 Ruby on Rails 比较陌生 但我开发应用程序已经有一段时间了 我似乎遇到的问题是 当我创建一个新的 Rails 应用程序 本地 使用 c9 时 当我启动 apache 服务器时 我似乎收到此错误 Specified sq
  • 游标在“查询、删除表、创建表、查询相同表名”后返回相同的列

    例如我有一个名为myTable在我的数据库文件中 Android ps它不支持列重命名 删除等 这张表有idx name columns 我想删除并重新创建该表 但使用新列 我是这样做的 db transaction var cursor
  • 从SQLite列中获取所有数字字符串并进行总和计算

    我是 Android 和 SQLite 的新手 我在 SQLite 中有一个只有数字的 AMOUNT 列 我可以在 ListView 中显示它 但我无法找到任何我理解的方法来将它们全部添加并显示在 TextView 中 这是数据库助手 im
  • iPhone 开发 - sqlite3_bind_int 不起作用

    我正在尝试使用以下代码在数据库中插入一些数据 void insertLocationOnDatabase LocationType aLocation sqlite3 stmt stmt int location aLocation loc
  • 锁定 SQLite 数据库以从 C# 读取

    我的项目有一个 C dll 其中在 Sqllite 中创建一个数据库 共享拒绝 无 这个 dll 会将数据插入到数据库中 我有一个 C exe 它必须访问数据库并显示它 显示需要异步完成 在启动与 sqlitedb 的连接时 有什么方法可以
  • 使用 Python 3 动态插入到 sqlite

    我想使用 sqlite 写入多个表 但我不想提前手动指定查询 有数十种可能的排列 例如 def insert sqlite tablename data list global dbc dbc execute insert into tab
  • Import-Csv - 成员已存在问题

    我必须将多个 CSV 文件合并为一个文件 每个 CSV 都有一个标题 其中一列标题是相同的 理想情况下 最终文件 all out csv 必须有一个标头 我运行 PowerShell 代码 Import Csv out 1 result c
  • SQLiteDatabase.openDatabase 与 SQLiteOpenHelper.getReadableDatabase

    这两种方法有什么区别吗 两者都返回一个打开的 SQLiteDatabase 如果数据库不存在 两者都可以创建数据库 当需要读 写时 SQLiteOpenHelper 还具有 getWriteableDatabase 我应该使用哪种方法以及在
  • 使用 nw-gyp 构建 node-sqlite3

    我正在尝试为 node webkit 构建 sqlite3 The sqlite3 https www npmjs com package sqlite3 installing页面解释说它需要使用 nw gyp 来完成 据我了解 我应该下载
  • 在 PHP 中将 CSV 写入不带括号的文件

    是否有本机函数或实体类 库用于将数组写入 CSV 文件中的一行而无需封装 fputcsv将默认为 如果没有为封装参数传入任何内容 谷歌让我失望了 返回一大堆有关的页面的结果 fputcsv PEAR 的库做的事情或多或少与fputcsv 工
  • Qt:如何连接到 SQLite?

    我安装了 SQLite3 解压到 c sqlite 创建了一个数据库 c sqlite mzsales 现在我试图在 QTableView 中显示其内容 QSqlDatabase db QSqlDatabase addDatabase QS
  • Django 中从 sqlite 迁移到 postgresql

    我想迁移自sqlite to PostgreSQL db 我安装了 postgresql 并在其 shell 上创建数据库 然后配置我的 django 设置如下 default ENGINE django db backends postg
  • Windows 7 x64 上的 Ruby on Rails SQLite 问题

    当我尝试做的时候db create使用 Windows 7 x64 在具有此数据库配置的 sqlite 数据库上 development adapter sqlite3 database db development sqlite3 tim
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • SQLite 返回错误的 2013 年周数?

    我有一个简单的 SQL 来计算 SQLite 报告中的周数 SELECT STRFTIME W date column 2009 2012 年的数据是正确的 2013 年我总是得到错误的周数 例如 SELECT STRFTIME W 201
  • iOS 中的 CSV 逐行解析

    我正在 Objective c 中解析 CSV 文件 该文件包含如下内容 line 40 Rising searches line 41 nabi avc Breakout line 42 stonewall 700 line 43 med
  • Python-将标题写入csv

    目前我正在用 python 编写查询 将数据从 oracle dbo 导出到 csv 文件 我不知道如何在文件中写入标题 try connection cx Oracle connect user pass tns name cursor
  • 下载 csv 文件 node.js

    我正在使用 node js 构建一个应用程序并尝试将数据下载为 csv 文件 我正在使用 json2csv https www npmjs com package json2csv https www npmjs com package j
  • 填充 CoreData 创建的 sqlite 数据库

    我有一个由 CoreData 模型自动创建的 sqlite DB 但我的应用程序不会让用户能够将数据写入其中 而是我想用程序所需的所有数据预先填充它 我的问题是 CoreData 创建的 sqlite DB 具有未知的表和字段 这些表和字段

随机推荐