2012-08-24 4 views
1

주가가 포함 된 CSV 파일이 있습니다. 나는 SQL에 관해서는 새로운 것이지만 많은 연구를 해본 결과 작동해야한다고 생각하는 코드를 제안했다. 그러나 그렇지 않습니다. 나는 오류 모든 방법을 얻을 ....테이블을 만들고 csv 또는 txt 파일에서 데이터 가져 오기

USE ShakeOut 
GO 
CREATE TABLE CSVTest1 
(Ticker varchar(10), 
dateval smalldatetime), 
timevale time(), 
Openval varchar(10), 
Highval varchar(10), 
Lowval varchar(10), 
Closeval varchar(10), 
Volume varchar(10), 
) 
GO 

BULK 
INSERT CSVTest1 
FROM 'c:\TEST.txt' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 
--Check the content of the table. 
SELECT * 
FROM CSVTest1 
GO 
--Drop the table to clean up database. 
DROP TABLE CSVTest1 
GO 

내 CSV 파일은 오후 3시 15분 0초로 TIMEVALUE이 있고, 나는 테이블에 그것을 설정하는 방법을 모르겠어요. 여기

5/1/2009,9:30:00 AM,18.21,18.45,18.21,18.32,32163 
5/1/2009,9:35:00 AM,18.33,18.34,18.27,18.29,36951 
5/1/2009,9:40:00 AM,18.29,18.38,18.25,18.37,53198 
5/1/2009,9:45:00 AM,18.38,18.4,18.28,18.285,49491 

그리고 SQL Management Studio의 내 오류 메시지입니다 : 내가 생각하는 다른 값은 여기 내 csv 파일의 샘플입니다, aproxmately 맞아

Msg 102, Level 15, State 1, Line 4 Incorrect syntax near ','. Msg 208, 
Level 16, State 82, Line 3 Invalid object name 'CSVTest1'. Msg 208, 
Level 16, State 1, Line 3 Invalid object name 'CSVTest1'. Msg 3701, 
Level 11, State 5, Line 3 Cannot drop the table 'CSVTest1', because it 
does not exist or you do not have permission. 

내가 정말 여기에 도움이 감사하겠습니다, 내 이 모든 시간이 끝나고 나서 머리가 아무 진행없이 폭발하려고합니다. 나도 MySQL을 사용해 봤지만 거기에서도 작동하지 않았다.

저는 새로 나온 제품이므로 자세히 설명해야 할 수도 있습니다.

+0

예제 CSV 파일이 테이블 정의와 정확히 일치하지 않습니다. 표에는'Ticker' 열이 있지만 CSV 예는 없습니다. –

답변

1

CREATE TABLE 문에 관련없는 쉼표가있는 것으로 보입니다. 닫는 괄호 앞에 마지막 열 뒤에 쉼표가 있습니다. 아마도 일부 구현에서는 유효하지만 제거하려고 시도 할 수 있습니다. 다음으로 변경하십시오.

Volume varchar(10) 

아 - 두 번째 열 정의에 관계없는 닫는 부모가있는 것으로 보입니다.

dateval smalldatetime, 

그리고 시간 열 :로 변경

timevale time, 

궁극적으로, 당신은 아마 CREATE TABLE 문 구문이 올바른지, 다음 다른 부분을 추가하기 시작 얻기 위해 시도해야 나타납니다.

+0

안녕하세요. 귀하의 도움과 제안에 감사드립니다.하지만 불행히도 문제를 해결하지 못했습니다. 나는 방금 여기에서 길을 잃고, VBA에서 많은 시간을 보낸다. –

+0

고마워, 그건 좋은 생각이었다. 이제 대량 섹션을 삭제하고 테이블이 현재 작동 중입니다. 하지만 AM/PM 관련 정보는 언제 표시됩니까? –

+0

@EspenSkeie : 나는 당신의 질문을 이해하고 있는지 잘 모르겠습니다. 시간은 올바르게 가져와야한다고 생각하지만 설정에 따라 오전/오후보다는 24 시간 형식으로 표시 될 수 있다고 생각합니다. –

0

마지막 열 정의 후 쉼표가 필요하지 않습니다. Volume varchar(10),.

timevaletimeval이어야한다고 가정합니다.

time()time이어야합니다.

또한 나는 아마도 까다 롭지 만 처음 두 문자를 제외하고는 모든 열 이름의 첫 문자를 대문자로 표기했습니다. 오류는 발생하지 않지만 일관된 명명 규칙을 갖는 것이 좋습니다. 나는 'v'를 val로 대문자로 쓰고 전체 단어를 씁니다.

CSV 데이터도 수정해야합니다. 널 (null)이더라도 모든 열을 지정해야합니다. 내 예제 데이터를보십시오 (각 행의 끝에있는 새 행은 설명 용으로 만 사용됩니다).

1234567890,2012-08-25,22:15,anytext,ornum,for,varchar,columns <-new line 
abcd123456,2010-05-20,00:01,anything,in,these,varchar,columns <-new line 
abcd123456,2010-05-20,00:01,anything,in,,,columns    <-new line 

이 작동 :

CREATE TABLE CSVTest1 (
    Ticker varchar(10) NULL, 
    DateValue smalldatetime NULL, 
    TimeValue time NULL, 
    OpenValue varchar(10) NULL, 
    HighValue varchar(10) NULL, 
    LowValue varchar(10) NULL, 
    CloseValue varchar(10) NULL, 
    Volume varchar(10) NULL) 
GO 

BULK INSERT CSVTest1 
FROM 'C:\TEST.txt' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n') 
GO 

귀하의 CSV 파일은 ROWTERMINATOR = '\n'에 의해 지정된 각 필드 사이에 쉼표가 FIELDTERMINATOR = ','에 의해 지정된대로 삽입 할 각 레코드에 대한 새로운 라인을 가질 필요가있다.

편집 : 그런데

당신이 다음 사용자 인터페이스를 통해 테이블을 만들 수 있습니다 SQL Server 관리 Studio (SSMS)를 사용하는 경우 :

  • 오른쪽 테이블을 클릭
  • 스크립트 표는
  • 새 쿼리 편집기에
,536,913 만들기 창
+0

감사합니다. 이것은 매우 도움이되었고, 매우 빠른 응답이었습니다. SQL에서 일종의 가져 오기/내보내기 기능을 시도했지만 이번 주말에 이러한 것들을 읽을 것입니다. 나는 며칠 전 SQL로 시작했고 지식 만 가지고있다. 감사합니다 :-) espen –

+0

다음은 쿼리 결과를 CSV 파일로 내보내는 데 유용한 자습서입니다. http://www.sqlservercentral.com/blogs/waterox-sql/2014/08/19/export-a-ssms-query- result-set-to-csv / – Elaskanator

관련 문제