하루 5000건의 Data을 업로드 시켜야합니다.
서버DB는 SQL Server이고 로컬DB는 ParaDox입니다.
업로드시 이미 있는 데이타는 무시하고 없는것은 Insert 해야 하죠
1 Record씩 하는까 엄청느리고...
아래 방법처럼 50건씩 한번에 날리니까 정상인 DATA도 무시되네여..
좋은 업로드 방법좀 알려주세여...ㅜㅜ
서버의 Index을 지울수도 없고....
procedure TForm1.Button1Click(Sender: TObject);
begin
//정말 이상타... 콤포의 한계인가. 아니면 PC의 한계인가..
// Values(6,"6") 인것은 모드 Key Error
// Values(32,"32")
// Values(33,"33") 인것은 정상 Data 입니다.
// 그런데 아래의 상태에서 실행 시키면 정상 Data중에 성공하는것 도 있고
// 실패하는 것도 있어요 정말 이상하네여.. 잘몰라서 그런지 모르지만
{ TEST Table
CREATE TABLE dbo.Test (
bb int NOT NULL ,
cc varchar (10) NOT NULL ,
CONSTRAINT PK___1__17 PRIMARY KEY CLUSTERED
(
bb
)
)
GO
}
With Query1 do
begin
Close;
SQL.Clear;
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');//10
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');//17
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');
Sql.Add(' Insert Into Test Values(6,"6") ');//24
Sql.Add(' Insert Into Test Values(6,"6") ');//25
Sql.Add(' Insert Into Test Values(6,"6") ');//26
Sql.Add(' Insert Into Test Values(32,"32") ');//27
Sql.Add(' Insert Into Test Values(6,"6") ');//28
Sql.Add(' Insert Into Test Values(33,"33") ');//29
Try
ExecSql;
Except
end;
end;
end;
(1) Stored Procedure 로 여러개의 레코드를 한꺼번에 실행하는방법
(2) 클라이언트쪽에 데몬프로그램을 하나 만들어서 레코드 발생시 실시간으로
전송하는방법
(3) 데이터를 텍스트로 만들어서 FTP 나 소켓으로 전송하여 서버에서 그 파일을 데이터베이스에 저장하는 방법
.
.
.
.
.
많은 방법이 있겠지만 저는 대체로 (2) 방법을 씁니다.
물론 StoredProcedure 로 레코드하나를 데이터베이스에 추가하는걸 하나 만들어 두고.. 데몬프로그램에서 데이터가 발생될때마다 StoredProcedure 를 Call하는거죠...
Stored Procedure 내에서는 데이터가 이미 존재하는지 체크하여 업데이트 또는 인서트를 시켜줘야 하구요..
그럼.. 즐코~