는 내가해야 할 것은 테이블에 CSV 파일에서 레코드를 삽입하기 위해 SQL 서버 스크립트를 만드는 것입니다에 파일. 나는 이것이 "BULK Insert"를 사용하여 쉽게 할 수 있다는 것을 알고 있습니다.삽입 기록은 데이터베이스 테이블 (SQL 서버)
BULK
INSERT TempTable
FROM 'C:\Records.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
불행하게도, CSV 파일이 일치하지 않는 규정 (")를 포함 일부 필드 수도 있고 CSV 파일은 아래의 예제처럼 (수동)을 만들 때이 규정이 없을 수 있습니다.
10001,LeBron Quitter,CompanyA
10002,"Insane, Charlie",CompanyB
10003,Donald Punk,"CompanyC,CA"
하는 경우 1. 한정자가 표 (예 : "Insane)에 포함됩니다.
2. 쉼표 (,)는 필드 터미널레이터이므로 두 번째 레코드 4 개의 필드로 간주됩니다.
그래서 전 CSV 파일을 전처리하고 싶지 않기 때문에 다른 것을 생각해야합니다. MICROSOFT.JET.OLEDB.4.0을 사용하여이 솔루션으로 왔습니다.
INSERT INTO MyRealTable
SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;Database=C:\Temp\;','SELECT * FROM [Test.csv]')
참고 :
EXEC
sp_configure 'show advanced options', 1
Reconfigure
EXEC
sp_configure 'Ad Hoc Distributed Queries', 1
Reconfigure
EXEC
sp_configure 'OLE Automation Procedures', 1;
Reconfigure
EXEC
sp_configure 'Agent XPs', 1;
Reconfigure
질문 :
1. 내 솔루션 올바른 하나입니다 위의 코드는 다음과 같은 액세스 권한/권한을 & 실행이 반드시 실행하기 전에?
2. 다른 더 좋은 해결책이 있습니까?
3. MICROSOFT.JET.OLEDB.4 솔루션을 사용하고 있으므로 설치/필수 사항은 무엇입니까?
는 혼자 SQL 서버에서이 작업을 수행하려고
이 정기적으로 발생 한 시간 삽입 또는 뭔가 :
코드는 다음과 같을까요? – RThomas
데이터베이스 관리자가 대량으로 레코드를 삽입 할 때마다이 완료됩니다. 나는 당신이 "규칙적으로"그것을 부를 수 있다고 생각하지 않습니다 ... 혼란을 가져 주어서 죄송합니다 ... – Vini