是否可以将csv/txt文件附加到SQL表中?
我已经用SQL设计了一个表。我的目标是创建一个存储过程,将某个位置的数据追加到此表中。它是一个大数据集(超过255列),因此我无法通过VBA直接将其加载到MS access(前端)。我相信这只留给我一个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'
INSERT INTO tablename (field 1, field 2)
SELECT * FROM 'Z:\temp\Cash_Activity_201910091702.csv';
看看这个代码,也许它可以帮助你。
在我看来,这是最接近你的要求。
但是我还没有在超过255个栏目上尝试过,所以我想把它发布到世界各地 有如此多的列和字段长度超过15个字符的问题是数字中的第15个字符在excel中丢失
表中的字段(列)不能超过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 +
''''