문제

내가 가져올 필요가 큰 CSV 파일로 SQL server.나는 사용:

BULK 
INSERT CSVTest
        FROM 'c:\csvfile.txt'
            WITH
    (
                FIELDTERMINATOR = ',',
                ROWTERMINATOR = '\n'
    )
GO

문제는 나의 모든 분야에 둘러싸여 있 따옴표("")그래서 행 실제로 모:

"1","","2","","sometimes with comma , inside", "" 

할 수 있게 대량으로 가져오고해 SQL 사용하는 따옴표는 필드 구분자는?

편집:문제를 사용하여'","'으로 구분 기호에서와 같이,예를 제안하는 것입니다:무엇 대부분의 예로는지,그들은 가져오는 데이터 포함하여 처음에서"첫 번째 열고 마지막에서"마지막에,그들은 가구입니다.슬프도다 내가 첫째로(그리고 마지막)열 datetime 및 허용하지 않습니다"20080902 을 가져올 수 있으로 날짜/시간입니다.

에서는 무엇이었을 읽 arround 생각 FORMATFILE 갈 방법입니다,하지만 문서(등 MSDN)은 몹시 unhelpfull.

도움이 되었습니까?

해결책

내가 이것을 알고 있지 않은 진정한 해결책이지만 내가 사용하는 거짓에 대한 테이블을 가져와 이며 설정한 모든 것입니다.그때 나는 삽입되는 스트립으로"캐릭터와는 않습니다.그렇지 않은 꽤 있지만 그것은 작업을 수행합니다.

다른 팁

FIELDTERMINATOR='","'

여기에 좋은 링크에 도움이 첫 번째와 마지막 견적을 보이는 데 사용하는 방법은 문자열이 SP

http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file

다른 해킹하는 내가 때때로 사용,열 CSV Excel,다음 sql 문을 작성으로 세포의 끝에서 각각의 행이 있습니다.예를 들어:

=concatenate("insert into myTable (columnA,columnB) values ('",a1,"','",b1,"'")")

채우기 아래로 채울 수 있습니다 이것으로 모든 행습니다.그냥 복사 및 붙여 출력으로 새로운 쿼리 창을 엽니다.

그것은 오래된 학교이지만,당신이해야 할 수입면에서는 동안 그것을 저장 당신이 장난으로 독서 모든 모 설명서에'적절한 방법으로 그것을 할 수 있습니다.

의 경우.이 가져올 때 사용할 수 있습니다 Excel 물건입니다.Excel CSV 파일을 열 수 있습니다,그래서 당신은 필요한 그 밖으로 정확한[연결 문자열][2].

[2]:Driver={Microsoft 텍스트 드라이버(*.txt;*.csv)};Dbq=c: xtFilesFolder\;확장=asc,csv,탭,txt;

Id 말을 사용하 FileHelpers 해당 오픈 소스 라이브러리

당신이해야 할 프로그래밍 방식으로 이나 그것은 하나간다.

를 사용하여 엔터프라이즈 관리자,오른쪽 클릭 데이터 가져오기를 선택할 수 있습의 구분 기호.

당신이 볼로 BCP/BULK INSERT 않기 때문에 BSP 또는 대량 삽입 핸들이 잘하는 경우를 인용,일치하지 않도 형식으로 파일(심지어는 XML 형식으로 파일을 제공하지 않는 옵션)고 더미["]에서 문자열의 시작과 끝을 사용하여[","]으로 구분 기호입니다.기술적으로 CSV 파일이 필요하지 않["]문자가 없을 경우 임베디드[,]자

그것은 이러한 이유로는 쉼표로 구분된 파일은 때로는 코미디 제한된 파일이 있습니다.

의 경우 필요로 할 것이 엑셀에서 서버에서 문제가 될 수 있습 64-bit 환경에서-그것을 알고의 문제를 사용하여 엑셀에서 제트기에서 64 비트입니다.

SSIS 은 정말 당신의 최선의 방법으면 파일은 가능성이 달라질에서 당신의 기대에 미래입니다.

u 이것을 시도할 수 있는 코드가 매우 달콤하려는 경우, 이 원하지 않는 세미콜론에서 당신의 코드입니다.는 경우 예를 들어 데이터는 다음과 같습니다:
"켈리","Reynold","kelly@reynold.com"

Bulk insert test1
from 'c:\1.txt' with ( 
    fieldterminator ='","'
    ,rowterminator='\n')

update test1<br>
set name =Substring (name , 2,len(name))
where name like **' "% '**

update test1
set email=substring(email, 1,len(email)-1)
where email like **' %" '**

전나무를 가져올 필요가 CSV 파일로 데이터를 테이블

다음 삽입할 수 있습니다 bulk 행 현재 권장되는 버전은 여기에서 찾을 사용하여

using System;
using System.Data;
using System.Data.SqlClient;

namespace SqlBulkInsertExample
{
    class Program
    {
      static void Main(string[] args)
        {
            DataTable prodSalesData = new DataTable("ProductSalesData");

            // Create Column 1: SaleDate
            DataColumn dateColumn = new DataColumn();
            dateColumn.DataType = Type.GetType("System.DateTime");
            dateColumn.ColumnName = "SaleDate";

            // Create Column 2: ProductName
            DataColumn productNameColumn = new DataColumn();
            productNameColumn.ColumnName = "ProductName";

            // Create Column 3: TotalSales
            DataColumn totalSalesColumn = new DataColumn();
            totalSalesColumn.DataType = Type.GetType("System.Int32");
            totalSalesColumn.ColumnName = "TotalSales";

            // Add the columns to the ProductSalesData DataTable
            prodSalesData.Columns.Add(dateColumn);
            prodSalesData.Columns.Add(productNameColumn);
            prodSalesData.Columns.Add(totalSalesColumn);

            // Let's populate the datatable with our stats.
            // You can add as many rows as you want here!

            // Create a new row
            DataRow dailyProductSalesRow = prodSalesData.NewRow();
            dailyProductSalesRow["SaleDate"] = DateTime.Now.Date;
            dailyProductSalesRow["ProductName"] = "Nike";
            dailyProductSalesRow["TotalSales"] = 10;

            // Add the row to the ProductSalesData DataTable
            prodSalesData.Rows.Add(dailyProductSalesRow);

            // Copy the DataTable to SQL Server using SqlBulkCopy
            using (SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=dbProduct;Integrated Security=SSPI;Connection Timeout=60;Min Pool Size=2;Max Pool Size=20;"))
            {
                dbConnection.Open();
                using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
                {
                    s.DestinationTableName = prodSalesData.TableName;

                    foreach (var column in prodSalesData.Columns)
                        s.ColumnMappings.Add(column.ToString(), column.ToString());

                    s.WriteToServer(prodSalesData);
                }
            }
        }
    }
}

Yup,K 리처드가 오른쪽: FIELDTERMINATOR = '","'

http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file 더 많은 정보를 원하시면.

사용할 수도 있습 DTS 또는 SSIS.

당신이 통제하는 입력 형식?|(파이프),그리고 는 일반적으로 더 나은 분야 터미네이터.

하는 방법을 알아낼 경우 파일을 얻을 수있으로 구문 분석 windows 응요 SqlBulkInsert 클래스에 삽입할 수 있음을 의미합니다.

이것은 오래된 질문에 그래서 나는 이것을 쓰고자하는 사람들을 돕기 위해 우연히습니다.

SQL Server2017 소개 FIELDQUOTE 매개 변수를 대상으로 정확한 사용 사례입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top