2013-10-09 2 views
1

Как вставить datetime() в столбец, импортированный с .import? Если я заполняю поле csv значением datetime(), оно заполняется в таблице как строка «datetime()», а не время, когда файл был импортирован. Я заселение таблицы:insert datetime() from .import

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».

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 

Примечание: Я запускал последнюю версию SQLite3 на WinXP.

+0

Благодарим за предложение. – adayzdone

0

Я в конечном итоге импортировал файл во временную таблицу tmp (cName, cAddress). Затем я побежал

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