我正在尝试将多个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")
答案 0 :(得分:0)
DISTINCT
不适合您,因为其他列中的值在后续行中不同。
我会分两个阶段来做这件事。
[Outlets]
或者,您必须遍历每条记录,然后测试您是否应为每个记录执行INSERT
或UPDATE
。