質問

I輸出大CSVファイルをSQLサーバーです。を使用しています:

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

問題は、全ての分野に囲まれた引用符("")で連続で実際に次のように記述されています。

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

できますか何だかバルクで輸入していSQLの引用についてのフィールド調査のデリミタ?

編集:の問題を'","として区切り文字としての例を示唆すると:ほとんどがいのがいる場合、データをインポートを含む最初の列の最後の最後、そのあとは見ていて気分が良いもの帯です。Alas私の最初と最後のカラムはdatetimeとはできない"20080902するとして輸入されたdatetime.

らんどろ風mikiモデルを作ってみたarroundと思いFORMATFILEでの道のりですが、しかし、ドキュメンテーションを含むMSDNはものすごくunhelpfull.

役に立ちましたか?

解決

そうすることでない解が、新たにダミーテーブルの輸入とnvarcharに設定しまれています。その思い入れており、これらの文字の変換式なかな仕事です。

他のヒント

FIELDTERMINATOR='","'

こちらはリンクの最初の見積もり見---どのように用いた部分文字列のSP

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

他のhackすることもあるのですが、利用は、CSV、Excel、その書sql文の細胞へ末ます。例えば:

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

項目ですの移植すべて行います。キャラクター設定をコピー&ペーストを出力し新しいクエリウィンドウ

この古い学校だけに必要なの輸入を節約いろな読みのすべての不明瞭に文書化の"適切な"について教えてください。

OpenRowSet.ることができますのExcel。Excelで開いCSVファイルが必要となりますの修正[ConnectionString][2]となります。

[2]:ドライバー={Microsoftテキストドライバ(*.txt;*.csv)};Dbq=c: xtFilesFolder\;拡張=asc,csv,tab、txt;

Idと言う利用FileHelpersそのオープンソース図書館

んだこのプログラムに、それとも一時間。

の企業、右クリックでデータをインポートでき選択になります。

いてBCP/バを挿入しないことから、システム大量挿入を扱うこの場合引用は一貫しても、その形式のファイル(XML形式のファイルなのオプションおよびダミー[""のキャラクターの開始と終了を[","]のセパレーターが不要になる。技術的にはCSVファイルである必要がない["】の文字がない場合は組み込み[,]文字

はこの理由によるカンマで区切られたファイルという言葉で表すこともありコメディ-限定ファイルです。

OpenRowSetを必要とExcelのサーバが問題となる64ビット環境-この問題を優ジェット、64ビットとしています。

SSISは本当に最良のベットの場合はファイルがりにご期待する。

uしてみてはこのコードは非常に甘されました この取り不要のセミコロンからのコードです。場合例えば、お客様のデータは以下のようになっています:
"Kelly","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 **' %" '**

Dvに必要なものを輸入CSVファイルをデータテーブル

そして挿入することができます。ルの使用SQLBulkCopy

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);
                }
            }
        }
    }
}

ユKリチャードは: FIELDTERMINATOR = '","'

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

このまま使用DTSはSSIS.

いて制御入力フォーマットは何ですか?|(パイプ)は、 ることは通常、よりよい分野ターミネータ.

合図などのファイルの構文解析へのDataTable、私のSqlBulkInsertクラスのために挿入することでSQLサーバーです。

ことを義務付けられているので、書いていをお手伝いすべく人を迎えることもできるだろう。

SQLサーバー2017年のFIELDQUOTEパラメータに対してこの正確な使用例です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top