Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将csv/txt文件附加到SQL表中?_Sql_Ms Access_Flat File - Fatal编程技术网

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

是否可以将csv/txt文件附加到SQL表中?,sql,ms-access,flat-file,Sql,Ms Access,Flat File,我已经用SQL设计了一个表。我的目标是创建一个存储过程,将某个位置的数据追加到此表中。它是一个大数据集(超过255列),因此我无法通过VBA直接将其加载到MS access(前端)。我相信这只留给我一个SQL选项 我已经在互联网上寻找解决方案,但毫无效果 我在下面尝试的基本代码,但是我被卡住了,没有找到这个 INSERT INTO tablename (field 1, field 2) SELECT * FROM 'Z:\temp\Cash_Activity_201910091702.csv'

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

我已经在互联网上寻找解决方案,但毫无效果

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

INSERT INTO tablename (field 1, field 2)
SELECT * FROM 'Z:\temp\Cash_Activity_201910091702.csv';
看看这个代码,也许它可以帮助你。 在我看来,这是最接近你的要求。
但是我还没有在超过255个栏目上尝试过,所以我想把它发布到世界各地

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

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

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

  • 完成后,我在SQL暂存表中创建了一个大容量Insert语句,并使用VBA代码调用它。文件名在SQL中处理得不好,所以我不得不为上传创建一个完整的字符串

  • 一,

    三,


    表中的字段(列)不能超过255个。听起来您的数据库还没有完全规范化。因此,您必须引入更多的表,或者拆分您的csv(最佳选项),或者使用VBA将特定的csv列导入特定的表列。嗨,Rene,我想您误解了Aaron Dietz的问题,255+列在csv文件中。他想将一些列数据导入到正常ms access db中的表中。所以我给他指出的解决方案是有效的。谢谢各位,不过,我正试图通过SQL中的存储过程来实现这一点。我尝试了此大容量插入氦.dbo。[BulkUploadTestFields]——从'C:\\SqlFiles\\f1915audt.ext.191008.24'——从'C:\SqlFiles\f1915audt.ext.191008-Copy.24'到'C:\SqlFiles\f1915audt.ext.191008-Copy.24'(FIRSTROW=4,FIELDTERMINATOR=',',ROWTERMINATOR='\r',TABLOCK--,--format='csv'--fieldquote=)我已经在SQL中构建了表,并导入了一次平面文件。不幸的是,它是从基础提供程序生成的标准文件。我现在开始尝试使用bulk insert语句在SQL中直接运行它。bulk insert dbname.dbo.table from'location'with(firstrow=2 fieldterminator=','rowterminator='\n'tablock)仍然没有运气。即使在我运行查询时,它也会说0行受影响,因此它必须读取数据,只需执行操作即可。请帮助
    wb.ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;"mypath & LedgerString Destination:=Range( _
        "$A$1"))
    
    @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 + 
     ''''