2013-10-09 45 views
1

如何將datetime()插入到使用.import導入的列中?如果我用datetime()填充csv的字段,它會以字符串「datetime()」的形式填充到表中,而不是導入文件的時間。我用填充表:從.import插入datetime()

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

我必須填充date_entered字段的值與一個佔位符的csv文件,然後再把更新表或我可以直接導入日期時間()函數?

回答

1

我不確定這是針對您的情況的最佳方法,但使用觸發器可以提供解決方案。

我用下面的數據來自一個名爲data.csv

data.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」 下面的腳本,下降/重新創建模式對象,設置數據文件分隔符,運行導入,然後從「演示」表中選擇。

demo.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二進制文件。

+0

謝謝你的建議。 – adayzdone

0

我最終將文件導入臨時表tmp(cName,cAddress)。然後我跑

insert into Main(date_entered, cName, cAddress) select datetime(), * from tmp;