我使用sql server bulk选项导入CSV,下面是我的sql输入。
MAXERRORS = 1000000,
CODEPAGE = 1251,
FIELDTERMINATOR = '~%',
ROWTERMINATOR = '0x0a',
ERRORFILE = 'C:\MyFile_BadData.log'
我的问题是BULK INSERT无法加载最后一行数据。
另请注意,sql bulk选项没有报告错误..
如果我在文件中添加一个空的换行符,则加载工作没有任何问题。
但我担心的是我无法修改CSV文件,请提出您的宝贵意见(如果有的话)
答案 0 :(得分:2)
当最后一行不以行终止符结束时,会发生这种情况。确保最后一行以行终止符结束,最后一行将被导入。
如果您无法更改生成CSV的导出例程,请使用powershell或其他内容将行终止符添加到CSV。如果您无法更改原件,请将其复制到可以更改原件的位置(包含在您的powershell脚本中)。
答案 1 :(得分:0)
完全!文件中的最后一个字符必须是某种特殊字符;换行,空格等。你能简单地删除最后一行并进行导入吗?如果您需要自动解决方案,请创建一个小型C#应用程序以打开该文件,删除最后一行,然后保存该文件。然后,运行您的导入过程。这一切都可以使用Windows任务计划程序进行控制,因此当您远离计算机时,甚至可以将其作为夜间作业运行。
https://www.digitalcitizen.life/how-create-task-basic-task-wizard
答案 2 :(得分:0)
如果您使用的是Unix变体,也可以使用它来添加到文件中,而无需手动编辑它。
sed -i '' -e '$a\' fname.csv
请注意,这只会在没有新行的情况下添加新行。因此,多次运行它不会影响已经包含尾随换行符的文件。