형식이 지정된 주소 지정 및 APN 번호와 같은 수십만 개의 다각형 행 및 기타 관련 데이터가있는 매우 큰 셰이프 파일이 있습니다. Shape2SQL과 같은 것을 사용하지 않고이 데이터를 지형이있는 테이블로 가져 오려면 어떻게해야합니까? 나는 영원히 걸릴 모든 행에 대해 insert 문을 실행할 수 없다. 최적의 해결책은 csv 또는 적절히 형식화 된 bin 파일을 작성한 다음 벌크 삽입 또는 bcp
또는 openrowset을 수행하는 것이지만 시도해보십시오. , 노력으로 CSV 파일이나 bin 파일을 얻을 수 없을 수도 있습니다. 아무도 도와 줄 수 있니?새로운 SQL Server 2008 테이블에 일괄 삽입 방법
다음 코드는 내가 관리 할 수있는 최상의 코드입니다.
SqlGeographyBuilder sql_geography_builder = new SqlGeographyBuilder();
sql_geography_builder.SetSrid(4326);
sql_geography_builder.BeginGeography(OpenGisGeographyType.Polygon);
sql_geography_builder.BeginFigure(-84.576064, 39.414853);
sql_geography_builder.AddLine(-84.576496, 39.414800);
sql_geography_builder.AddLine(-84.576522, 39.414932);
sql_geography_builder.AddLine(-84.576528, 39.414964);
sql_geography_builder.AddLine(-84.576095, 39.415015);
sql_geography_builder.AddLine(-84.576064, 39.414853);
sql_geography_builder.EndFigure();
sql_geography_builder.EndGeography();
SqlGeography sql_geography = new SqlGeography();
sql_geography = sql_geography_builder.ConstructedGeography;
FileStream file_stream = new FileStream("C:\\PROJECTS\\test.bin", FileMode.Create);
BinaryWriter binary_writer = new BinaryWriter(file_stream);
sql_geography.Write(binary_writer);
binary_writer.Flush();
binary_writer.Close();
file_stream.Close();
file_stream.Dispose();
SqlConnection sql_connection = new SqlConnection(connection_string);
sql_connection.Open();
SqlCommand sql_command = new SqlCommand();
sql_command.Connection = sql_connection;
sql_command.CommandTimeout = 0;
sql_command.CommandType = CommandType.Text;
sql_command.CommandText = "INSERT INTO [SPATIAL_TEST].[dbo].[Table_1] ([geo]) " +
"SELECT [ors].* " +
"FROM OPENROWSET(BULK 'C:\\PROJECTS\\AMP\\test.bin', SINGLE_BLOB) AS [ors] ";
sql_command.ExecuteNonQuery();
sql_command.Dispose();
sql_connection.Close();
sql_connection.Dispose();
그러나 이것으로 폴리곤을 개별적으로 가져올 수 있습니다. 다른 모든 것들도 필요합니다.
CSV 파일은 일반 작업을 해달라고. 내 유일한 희망은 여기 (http://stackoverflow.com/questions/282604/best-way-to-export-import-ms-sql-2008-geography-data) 및 위의 코드와 같이 이진 데이터 파일을 만드는 것이 었습니다. 내가하고 싶은 일이 지리학 만 가져 오기만하면 훌륭한 작품. 문제는 필자가 지리학보다 파일에 들어가는 방법이 더 많아서 바이너리 파일이나 형식 파일을 빌드하는 방법을 알 수 없기 때문에 적절한 bcp 또는 openrowset을 수행 할 수 있습니다. –
향후 독자를 위해 .NET의 SqlBulkCopy가 SqlGeoegraphy 형식을 직접 삽입 할 수 있다는 것을 알고 있어야합니다. 이것에 대한 대답은 여기를 참조하십시오 : https://stackoverflow.com/a/21128445 –