SQLルからのインポートCSV
-
01-07-2019 - |
質問
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パラメータに対してこの正確な使用例です。