导入多个CSV文件,不包括重复值SQL

时间:2015-06-21 21:45:48

标签: sql vb.net oledb

我正在尝试将多个CSV文件加载到访问数据库中,但只想从第一列(PID)导入唯一值。我有以下例程,它将在第一次工作,但如果我尝试导入一个具有重复值的文件(所有文件只有一个每个PID出现)它崩溃了

我的CSV略有不规则,标题从第二行开始,但是为了测试我实际上删除了第一行,但也需要适应这一点

有什么建议吗?

Dim OpenMe As New OpenFileDialog
    Dim FileStr As String = Nothing

OpenMe.Title = "Please Locate Your Outlets File"
OpenMe.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop
OpenMe.Filter = "CSV Files (*.csv) | *.csv"
OpenMe.Multiselect = False
OpenMe.ShowDialog()
FileStr = OpenMe.FileName

TextBox1.Text = FileStr

Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Dropbox\ROutlets\OutletsDB.accdb;")
conn.Open()
Dim cmd As New OleDbCommand("INSERT INTO [Outlets] ([PID], [Category], [Sub Category], [Tertiary Category], [Description], [Pack Description] ) SELECT DISTINCT [PID], [Category], [Sub Category], [Tertiary Category], [Description], [Pack Description] FROM [Text;Database=C:\Users\Tset\Desktop;Hdr=Yes].[outlet-products111.csv] ", conn)
cmd.ExecuteNonQuery()
conn.Close()
MsgBox("File Imported")

1 个答案:

答案 0 :(得分:0)

DISTINCT不适合您,因为其他列中的值在后续行中不同。

我会分两个阶段来做这件事。

  1. 将行插入到没有主键约束的临时表中
  2. 使用其他逻辑(SQL或VB)来计算您在[Outlets]
  3. 中插入的记录

    或者,您必须遍历每条记录,然后测试您是否应为每个记录执行INSERTUPDATE