sql - 将包含数据的完整 CSV 结构复制到数据表
问题描述
我必须复制完整的 CSV 文件数据及其结构,而无需编写长代码。我已经使用 CSV 来访问数据表,但是在为 SQL Datatase 使用相同的代码时出现错误。
我的 CSV 代码以访问数据表;
Try
Dim OleDbCnn As New OleDbConnection
OleDbCnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\menifestogo.mdb"
OleDbCnn.Open()
Dim cmd As New OleDbCommand("SELECT * INTO [TransactionsDetails] FROM [Text;Database=d:\;Hdr=No].[csvfile.csv]", OleDbCnn)
cmd.ExecuteNonQuery()
OleDbCnn.Close()
MsgBox("Success..")
Catch ex As Exception
MsgBox(ex.Message)
End Try
我的 CSV 到 SQL 数据库的代码
Try
Dim OleDbCnn As New SqlClient.SqlConnection
OleDbCnn.ConnectionString = "Server=DESKTOP-AS3NIDD\SQLEXPRESS; DataBase=dbS; Integrated Security=SSPI"
OleDbCnn.Open()
Dim cmd As New SqlClient.SqlCommand("SELECT * INTO [TransactionsDetails] FROM [Text;Database=d:\;Hdr=No].[csvfile.csv]", OleDbCnn)
cmd.ExecuteNonQuery()
OleDbCnn.Close()
MsgBox("Success..")
Catch ex As Exception
MsgBox(ex.Message)
End Try
得到错误:
无效的对象名称'文本;数据库=d:\;Hdr=No.csvfile.csv'
解决方案
坦率地说,如果 SQLServer 可以解析并理解它必须使用 Jet 驱动程序来访问 CSV,我会感到惊讶[Text;Database=d:\;Hdr=No].[csvfile.csv]
- Access 可能有效,因为您已经在使用 Jet 驱动程序并且它能够理解该文本是一种方式访问某处文件夹中的文件。Access/Jet 和 SQLServer 有很大不同
通过发出单个 SQL 语句将 CSV 批量加载到 SQLServer 看起来更像:
BULK INSERT Sales.Orders
FROM '\\SystemX\DiskZ\Sales\data\orders.csv'
WITH ( FORMAT='CSV');
这里有很多选择
如果你想创建一个新表,更像这样的东西应该可以
SELECT *
INTO YOUR_NEW_TABLE
FROM
OPENROWSET(
'MSDASQL',
'Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=PATH_TO_DIRECTORY_HOLDING_FILE;Extensions=csv;',
'select * from NAME_OF_CSV_FILE.csv'
) csv;
推荐阅读
- python - 如何仅创建三个线程或固定数量的线程并将 X 个列表分配给它们
- python - 如何在 Windows 中获取 virtualenv 的路径?
- javascript - this.state 在 React 组件渲染函数中未定义
- javascript - 如何在 onSubmit 调用的函数中使用状态?
- flutter - 如何在 Flutter 的 AlertDialog 中实现 Slider?
- python - Python:使用 ffill() 将数据帧从每日数据上采样到每小时数据
- powerbi - Power BI Web 源无法通过网关更新
- php - 编辑 Twig 文件上的变量内容
- get - Angular7 httpclient获取调用无法将PDF解析为blob
- swagger - 使用 swagger codegen 获取“列表”时
' 而不是简单的 'byte[]'