是否可以将 csv/txt 文件附加到 SQL table 中?

Is it possible to append a csv/txt file into a SQL table?

我有一个 table,我已经在 SQL 中设计好了。我的目标是创建一个存储过程,将某个位置的数据附加到此 table。这是一个大型数据集(超过 255 列),因此我无法通过 VBA 将其直接加载到 MS Access(前端)中。我相信这只会给我留下一个SQL选项

我已经在互联网上扩展了解决方案,但无济于事。

我在下面试过的基本代码,但是我卡住了,没有找到这个。

INSERT INTO tablename (field 1, field 2)
SELECT * FROM 'Z:\temp\Cash_Activity_201910091702.csv';

看看这段代码using ado to import csv data,也许它能帮到你。 在我看来,它最接近您的要求。 但我还没有在超过 255 列上尝试过

所以我弄明白了,并希望 post 向全世界展示它。

有这么多长度超过 15 个字符的列和字段的问题是数字中的第 15 个字符在 excel 中丢失了。

  1. 使用 VBA 代码,我通过 VBA 将目标文件导入为文本文件,强制第一列为文本。 (我建议您录制宏并单击您想要的列作为文本)

  2. 使用 VBA 代码,然后我以最佳方式对数据进行了规范化,删除了不必要的列。

  3. 完成后,我在 SQL 登台 table 中创建了一个批量插入语句,并使用 VBA 代码调用了它。 SQL 中的文件名处理不好,所以我不得不为上传创建一个完整的字符串。

1.

wb.ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;"mypath & LedgerString Destination:=Range( _
    "$A"))

3.

@filepath nvarchar(500) AS DECLARE  @bulkinsert NVARCHAR(2000) SET @bulkinsert = 

'BULK INSERT DBName.dbo.[table] FROM ''' 
+ @filepath + 
''' WITH ' +
'( ' +
    'FIRSTROW = 2, ' +
    'FIELDTERMINATOR = '','', '+
    'ROWTERMINATOR = ''\n''' +
    'TABLOCK--, '+
') ' +
'INSERT INTO table(FIELD NAMES) '+
'SELECT DISTINCT NAMES '+
'FROM table AS s ' +
'WHERE NOT EXISTS ( ' +
  'SELECT * '+
  'FROM table As t '+
  'WHERE t.UniqueAuditID = s.UniqueAuditID '+
') '+
'delete from table '+

'INSERT INTO NewTable(FIELD NAMES) '+ 
'SELECT FIELD NAMES ' +
'FROM stagingtable'+
'WHERE fileRef = ''' 
 + @filepath + 
 ''''