2017-12-22 7 views
1

timestamp DATETIME 열이있는 테이블을 만들고 유닉스 타임 스탬프가 지정된 행을 가진 파일 CSV에서 데이터를 가져 오려고합니다. 내가 DataGrip의 CSV 가져 오기 기능을 사용하려고하면CSV에서 (내) SQL 데이터베이스로 가져올 때 Unix 타임 스탬프가 자동으로 DATETIME 열로 변환 될 수 있습니까?

그러나, 나는

1:1: conversion failed: "1394669640" to datetime 
2:1: conversion failed: "1394670060" to datetime 
3:1: conversion failed: "1394670480" to datetime 
4:1: conversion failed: "1394670780" to datetime 

어쩌면 dataGrip가 가장 좋은 도구가 아닌의 조정에 오류가 발생할 수 ,하지만 주어진, 내가 함께 할 수있는 모든 훨씬 예쁘다 DB 서버 [*]를 실행하는 컴퓨터에 직접 액세스 할 수 없습니다. 분명히이 열을 INT 수 설정하면 작동합니다.

테이블이 자동으로 변환되도록 구성하는 방법이 있습니까?


[*] 내가 할 수 있지만, DBMS는 호스트의 CSV 파일을 복사 부족하고 용기 내부에, 내가 LOAD DATA INFILE 같은 트릭을 재생하고 설정할 수 없습니다, 그래서 도커 컨테이너 내에서 실행됩니다 열은 FROM_UNIXTIME()입니다.

답변

0

LOAD DATA LOCAL INFILE을 사용하면 CSV 파일을 컨테이너에 복사 할 필요없이 원격 MySQL (즉, 도커 컨테이너 내부)로 CSV 파일을로드 할 수 있습니다. local-infile 옵션이 필요

mysql> create table MyTable (timestamp DATETIME PRIMARY KEY); 

mysql> load data local infile 'data.csv' into table MyTable (@dummy) 
    SET timestamp = FROM_UNIXTIME(@dummy); 
Query OK, 4 rows affected (0.01 sec) 
Records: 4 Deleted: 0 Skipped: 0 Warnings: 0 

mysql> select * from MyTable; 
+---------------------+ 
| timestamp   | 
+---------------------+ 
| 2014-03-13 00:14:00 | 
| 2014-03-13 00:21:00 | 
| 2014-03-13 00:28:00 | 
| 2014-03-13 00:33:00 | 
+---------------------+ 

참고 또한 클라이언트에서 원격 클라이언트를 허용, 서버에 모두 사용 가능합니다. 위의 예를 수행하려면 에서 local-infile=1을 활성화해야하고 클라이언트는 mysql --local-infile 옵션으로 실행해야합니다.

ERROR 1148 (42000) : 이러한 옵션을 모두하지 않고, 나는이 매우 혼란 오류가 발생했습니다 사용 된 명령은 자세한 내용은이 MySQL 버전

읽기 https://dev.mysql.com/doc/refman/5.7/en/load-data-local.html에 사용할 수 없습니다.

관련 문제