从 vb.net 导入数据库的问题

Posted

技术标签:

【中文标题】从 vb.net 导入数据库的问题【英文标题】:Problems importing database from vb.net 【发布时间】:2009-05-29 18:46:30 【问题描述】:

我正在尝试使用 vb.net 将表导入安全的 sql 数据库,但它似乎超时(或者我认为)并且没有正确导入(空值),我截断表以保存字段类型和然后调用 shell() 函数导入文件并

'清除验证导入表中已有的数据

cmd.CommandText = "TRUNCATE TABLE HedgeFileBuilders.dbo.HedgeInput_" & strProduct & "_VALIDATOR;"
cmd.ExecuteNonQuery()

're-import the inforce file to validate it

Try
    If chkSQLServerSource Then
    Shell(SQLLOCALDIR & "Prog\bcp.exe FileBuilders.dbo.Input_" & strProduct   & "_VALIDATOR in " & strFileName & "  -c -t , -r \n -S server -U user -P passkey -F 2 -h TABLOCK", AppWinStyle.Hide, True)
    Else
    Shell(SQLLOCALDIR & "Prog\bcp.exe FileBuilders.dbo.Input_" & strProduct & "_VALIDATOR in " & strFileName & "  -c -t , -r \n -S pcname -T -F 2 -h TABLOCK", AppWinStyle.Hide, True)
    End If
Catch ex As Exception
    MessageBox.Show("ERROR: An error occurred while re-importing the new business file.  Contact the system administrator.  " & ex.Message, "Contact System Administrator", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit Sub
End Try

'这不会返回和错误,但结果为空。我在 SQL 中手动进行导入,它可以工作(所有数据都在那里)。我什至使用上面 vb 代码中指示的 strFilename 和 Table 名称来确保在手动导入时我没有弄错名称。

我做错了什么?

附:我在上面的布尔值“True”之后尝试了超时整数参数“-l”,但没有帮助。

【问题讨论】:

【参考方案1】:

我建议将您正在执行的字符串(在局部变量中构建)与已知良好工作批处理/cmd 文件中的类似字符串进行比较。

此外,如果您的 bcp.exe 目录有空格,则需要在字符串中的整个可执行路径周围使用双引号。 strFilename 也是如此。

基本上,验证您的代码中是否正在为同一文件生成已知良好的手动命令行导入。

【讨论】:

【参考方案2】:

我尝试导入的表中的数据类型不同于被截断并添加导入数据的 SQL 表(null 和非 null 等)我修复了要匹配的数据类型,并且 shell 命令行按预期工作.

【讨论】:

以上是关于从 vb.net 导入数据库的问题的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 Excel 复制到 SQL 数据库 VB.NET

将特定数据从excel导入到datagrid vb.net

我正在将 348k 行数据从 Excel 导入到 VB.net SQL。我得到这个错误:超时已过期

从 MS Access 批量导入并插入 Sql Server [关闭]

在 VB.NET 中导致“导入中指定类型的命名空间不包含任何公共成员”的新 pc

处理从 csv 导入的大数据