2017-05-16 13 views
0

모든 NVARCHAR 컬럼에 데이터 가져 오기 마법사를 통해 SQL Server에 CSV :가져 오기 인용 이스케이프 I는 같은 CSV 데이터의 테이블이

    a | b | c | d | f  
1:    12  Dave Larry $1234.0 FALSE 
2:    324.0  Bob Gray $24.012 TRUE 
3:    2000  John Stan $204.0 
4:    9000 Stace Jill  - FALSE 
5:    850.0 Till    $30 TRUE 

필드와 같은 사용자의 주석으로는 쉼표를 포함 할 것이다, 그래서이 있습니다 작은 따옴표 나 큰 따옴표로 이스케이프 처리됩니다. Excel은 이러한 기능을 열어 가져 오기 전에 데이터를 정리하거나 조작하는 데 사용할 수 있습니다.

마이그레이션의 관점에서 나를 위해 가장 쉬운 것은 처음으로 VARCHAR로 단지 그 대상 대상 형식으로 데이터를 조작하는 SQL을 사용하여 다음의 SQL 서버로 데이터를 얻을 수 있었다.

나는 다음과 같은 문제로 실행 않았다

1) 문제를 일으킬 수있는 CSV를 가져 오려고. SQL Server Management Studio에서의 수입은 수입이 실패 할 수있는 텍스트 화폐로 포맷 된 의견 열 또는 숫자 같은 것을 의미 엄격하게 형식의 CSV를 기대하고있다. XLS로 CSV를 저장할 때

2), SQL Server Management Studio를 여전히 관계없이 포맷 한 단의 시도하고 데이터를 해석하는 방법에 대해 "스마트"가 될 것으로 보인다. 때때로, 데이터는 임포트 유틸리티가 이미 데이터가 숫자 인 가정하기 때문에 당신이 그것을 원하는 경우에도 NVARCHAR 또는 VARCHAR로 변환 할 수 없습니다. 탭으로 구분 된 항목은 특히 사용자 의견과 같은 항목에서 제대로 작동하지 않을 수 있습니다.

, SQL 서버에 CSV를 가져 오는 모든 컬럼 VARCHAR 또는 NVARCHAR를 만드는 오류가없는 방법은 무엇입니까?

답변

0

하나 개의 솔루션이 데이터를 사용하는 것이었다 -> 텍스트 열 구분 된 다음 어떤 구분 기호를 선택하지합니다. 그러나 Excel에서는 한 번에 하나의 열만 수행 할 수 있습니다. 그러나이 XLS는 모든 nvarchar처럼 SQL Server를 잘 읽습니다.

이 솔루션을 추가로 수정하면 PERSONAL.XLSB에 저장하여 향후 모든 워크 시트에서 사용할 수 있도록 다음 매크로를 만들 수 있습니다.

Sub ColumnToNVarChar() 
' 
' ColumnToNVarChar Macro 
' Convert a column in Excel to a format that SQL Server Management Studio's import process will interpret as nvarchar. 
' 
' Keyboard Shortcut: Ctrl+d 
' 
    ActiveCell.EntireColumn.Select 
    Selection.TextToColumns Destination:=ActiveCell.EntireColumn, DataType:=xlDelimited, _ 
     TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ 
     Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ 
     :=Array(1, 2), TrailingMinusNumbers:=True 
End Sub 

당신은 다음 XLS 파일로이 저장 : 키 조합이 매크로를 매핑함으로써, 당신을 위해 열 함수에 텍스트를 실행 다음은 셀을 선택할 수 있습니다, 다음 매크로는 열을 선택하고 SQL Server Management Studio의 "데이터 가져 오기"프로세스는 모든 열을 nvarchar로 처리합니다. 일반적으로 nvarchar (255)입니다.