1

如何将 datetime() 插入使用 .import 导入的列中?如果我用 datetime() 填充 csv 的字段,它将作为字符串“datetime()”填充到表中,而不是导入文件的时间。我在表格中填充:

insert into foo(date_entered,cName, cAddress) select * from tempTable;

我是否必须使用占位符填充 csv 文件中 date_entered 字段的值,然后更新表,还是可以直接导入 datetime() 函数?

4

2 回答 2

1

我不确定这是针对您的情况处理它的最佳方法,但是使用触发器可以提供解决方案。

我使用了名为 data.csv 的文件中的以下数据

数据.csv

1,datetime(),Row1
2,datetime(),Row2
3,datetime(),Row3
4,datetime(),Row4
5,datetime(),Row5
6,datetime(),Row6
7,datetime(),Row7
8,datetime(),Row8
9,datetime(),Row9

...并使用“.read demo.sql”运行以下脚本,该脚本删除/重新创建模式对象,设置数据文件分隔符,运行导入,然后从“演示”表中选择。

演示.sql

drop table demo;

create table demo (
  id  integer,
  dt  text,
  tag text
);

create trigger my_trigger after insert on demo
begin
  update demo set dt = datetime() where dt = 'datetime()';
end;

delete from demo;

.sep ","

.imp data.csv demo

select * from demo;

并在导入操作后在演示表中产生了以下结果。

$ sqlite3 my.db
SQLite version 3.8.0.2 2013-09-03 17:11:13
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .read demo.sql
Error: near line 1: no such table: demo
1,2013-10-09 23:47:14,Row1
2,2013-10-09 23:47:14,Row2
3,2013-10-09 23:47:14,Row3
4,2013-10-09 23:47:14,Row4
5,2013-10-09 23:47:14,Row5
6,2013-10-09 23:47:14,Row6
7,2013-10-09 23:47:14,Row7
8,2013-10-09 23:47:14,Row8
9,2013-10-09 23:47:14,Row9

注意:我在 WinXP 上运行最新的 SQLite3 二进制文件。

于 2013-10-09T23:58:08.973 回答
0

我最终将文件导入到临时表 tmp(cName, cAddress) 中。然后我跑了

insert into Main(date_entered, cName, cAddress) select datetime(), * from tmp;
于 2013-10-10T14:18:17.453 回答