문제
내가 가져올 필요가 큰 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 매개 변수를 대상으로 정확한 사용 사례입니다.