2011-04-06 6 views
0

는 내가 그 테이블에 정보를 추가 대량 할 수 있어야 자바 서블릿이 형태bcp를 사용하지 않고 SQL Server에 데이터를 대량 삽입하는 방법은 무엇입니까?

Table (id <Primary Key, Identity column>, name <VarChar (255)>) 

의 테이블의 번호와 SQL Server 2005의 DB를 가지고있다. SQL Server DB는 Servlet과 다른 컴퓨터에서 실행되며 해당 컴퓨터의 파일 시스템에 액세스 할 수 없습니다.

데이터 파일이 서버의 파일 시스템에 있어야하기 때문에 일괄 삽입을 사용할 수 없다는 것을 이해합니다. (필자는 할 수 없습니다) 모든 필드를 채울 것을 요구합니다 , 하나의 필드는 DB로 채워지는 ID 필드입니다.) 또는 채워지지 않은 필드를 마지막 필드로 사용하려면 (ID/ID 필드를 먼저 넣고 변경할 필요가 없습니다) 형식 파일이 필요합니다. 서버의 파일 시스템에 있어야합니다.

MySQL에서는 단순히 Load Data Local InFile을 사용합니다. SQL Server 2005에는 그러한 기능이 부족한 것 같습니다. 방금 뭔가 빠졌나요? bcp 또는 Bulk Insert를 사용하여 한 번에 둘 이상의 레코드를 SQL Server 테이블에 추가 할 수있는 방법이 있습니까?

TIA,

그렉

+1

[데이터 파일 :

ADO.NET은 SqlBulkCopy의 API를 지원 플로피 디스크, 하드 디스크 등). "] (http://msdn.microsoft.com/en-us/library/ms188365.aspx) –

답변

3
INSERT INTO Table (column_name, ...) 
Values 
(column_values,...),(column_values,...),(column_values, ...), ... 

참고 이것은 당신이

같은 것을 할 필요가 2008

http://msdn.microsoft.com/en-us/library/ms174335%28v=SQL.100%29.aspx

SQL 서버 2005과에서 SQL 서버 가능합니다

INSERT INTO table (column_name, column_name, ...) 
SELECT column_value , column_value, ... 
UNION ALL 
SELECT column_value , column_value, ... 
UNION ALL 
SELECT column_value , column_value, ... 
UNION ALL 
SELECT column_value , column_value, ... 
UNION ALL 
SELECT column_value , column_value, ... 
+0

감사합니다. 이것을 JDBC를 통해 SQL Server로 전송할 것입니다. JDBC 4를 사용하여 SQL Server 2005로 보낼 수있는 명령의 최대 길이를 알고 계십니까? –

+0

아니, 아니 ..하지만 당신의 필요를 고려하면 텍스트 파일의 모든 50 또는 100 라인을 말하여 일괄 처리 할 수 ​​있습니다. 따라서 텍스트 파일의 50-100 줄마다 insert 문을 실행합니다. 나는 JDBC 명령이 얼마나 먼저 보일지 알기 위해 노력할 것입니다. –

1

그래서 서블릿 시스템의 파일 시스템이나 SQL Server에 액세스 할 수 없습니까? (나는 LOAD DATA LOCAL INFILE이 파일을 필요로하기 때문에 MySQL에서 이것을 어떻게 할 것인지 잘 모르겠다.) . - "지정된 테이블이나 디스크에서 데이터를 가져올 수 있습니다보기 대량 INSERT로 가져올 데이터가 포함 된 데이터 파일의 전체 경로는 (사 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

+0

아니요, 서블릿의 파일 시스템에 액세스 할 수 있습니다. SQL Server 서버의 파일 시스템에 액세스 할 수 없습니다. 그리고 내 서블릿은 Windows가 아닌 Linux에서 실행됩니다. –

+0

@Greg Dougherty SQL Server에서 네트워크 공유 서비스 계정을 가리키는'BULK INSERT FROM'을 시도해 볼 수 있습니다. 사용 권한이 필요하거나 공유가 필요합니다. 또는 큰 XML을 사용하여 SP를 통해 삽입 하시겠습니까? –

관련 문제