###前提・実現したいこと
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

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/06 10:02
2016/07/06 10:31