質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

解決済

SQLSERVERへCSVファイルをBulkInsertする際にSQLServerテーブルに「""」が挿入される。

kei5
kei5

総合スコア13

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

2回答

0評価

0クリップ

22965閲覧

投稿2016/07/06 02:30

###前提・実現したいこと
vb.net においてMDBファイルからデータをCSV形式でエクスポートした後に、CSVデータをSQLServerに
BulkInsert処理をかけます。その際にCSVファイルの「""」を削除してるにも関わらず、
InsertされたSQLServerのテーブルには「""」が入ったままになってしまいます。
データは全てのレコードがInsertされていることを確認していますが、
「""」もInsertされているとデータとして利用できないことから、何か解決策があれば
ご教授いただくと助かります。
※データ件数は10万件です。

なお、「""」はMDBの項目型に依存しているようで、日付項目は「""」が入ってこずに
テキスト型の項目だけ「""」が付されています。

恐らく「型」の問題だとは考えています。
※SQLServerのInsert先の項目型は「nvarchar」を利用しています。

なお、直接AccessテーブルからSQLServerへデータをInsertできる方法があれば
そちらのコードをご教授いただいても大変助かります。

###発生している問題・エラーメッセージ
SQLServerには以下のように登録されてきます。

年月 更新日時 ソース名 "201606" | 2016/06/01 | "MDB" "201606" | 2016/06/02 | "EXCEL"

###該当のソースコード
変数宣言は省略します。

'エクスポート処理 ' 初期値の定義 dbNAME = "XXX.mdb" 'MDB 名を入力 ;[db1.mdb]を変更します dbPath = "C:\test" ' MDB の保存場所:このファイルと同一フォルダを指定 tbl = "明細" 'データベーステーブル ;[ST_TABLE]を変更します myDB = dbPath & "\" & dbNAME strPath = dbPath 'CSV ファイルの保存場所 EX)このファイルと同一フォルダを指定 strFileName = "明細.csv" 'CSV ファイルのファイル名 ;*****を変更します cnn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & myDB & ";") ' MDB との接続を確立する Kill(dbPath & "\" & strFileName) 'CSVファイルの削除 'CSVの指定 strConnect = "[Text;database=" & strPath & "]." & "[" & strFileName & "]" 'SQLの発行 strSQL = "SELECT * INTO " & strConnect & " FROM " & tbl cnn.Execute(strSQL) cnn.Close() : cnn = Nothing 'ダブルコーテーション削除処理 FSO = CreateObject("Scripting.FileSystemObject") With FSO.GetFile("C:\test\明細.csv").OpenAsTextStream buf = .ReadAll .Close() End With FSO.GetFile("C:\test\明細.csv").Delete() FSO.CreateTextFile("C:\test\明細.csv") buf = Replace(buf, """", "") With FSO.GetFile("C:\test\明細.csv").OpenAsTextStream(8) .Write(buf) .Close() End With FSO = Nothing 'BULKInsert処理 cnn = "" cnn &= "Data Source = xx.xx.xx.xx;" cnn &= "Initial Catalog = DB;" cnn &= "User ID=TEST; Password=TEST!;" cnn &= "Trusted_Connection = False;" Dim connectionString As String = cnn ' Open a sourceConnection to the database. Using sourceConnection As SqlConnection = _ New SqlConnection(connectionString) sourceConnection.Open() ' Delete all from the destination table. Dim commandDelete As New SqlCommand commandDelete.Connection = sourceConnection commandDelete.CommandText = _ "DELETE FROM dbo.Meisai" commandDelete.ExecuteNonQuery() 'BulkInsert Dim commandInsert As New SqlCommand commandInsert.Connection = sourceConnection commandInsert.CommandText = _ "BULK INSERT dbo.Meisai FROM 'c:\test\明細.csv' " & _ " WITH ( FIELDTERMINATOR =',', ROWTERMINATOR = '\n', FIRSTROW = 2);" commandInsert.ExecuteNonQuery() End Using

###試したこと
CSVで「""」を削除することが、そもそもいけないと考えて一度テキストファイルに変更してから
「""」を削除しましたが、SQLServerには「""」が入力されたままInsertされてしまいました。

###補足情報(言語/FW/ツール等のバージョンなど)
vb.net 2013
MS Access 2013(mdb形式)
SQLServer 2014

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。