PDA

View Full Version : سوال: دریافت یک فایل متنی با استفاده از BULK INSERT



FatemehB
سه شنبه 24 شهریور 1388, 12:57 عصر
سلام

من یک فایل متنی به صورت txt دارم که با استفاده از دستور زیر اونو به جدول موردنظرم import میکنه


Set @SQLTXT='BULK INSERT #MyTempTable FROM '+''''+ @SourceFile +'''' + ' With (FORMATFILE ='+''''+@FormatFile+''''+' )'
Exec(@SQLTXT)


در مورد داده های کاراکتری وقتی که لاتین هستند مشکلی ندارم ولی وقتی فارسی هستند به صورت کاراکترهای نامفوم دریافت می شوند
فرمت فایل fmt من به شکل زیر هست :

9.0
4
1 SQLCHAR 0 0 , 0 Id ""
2 SQLCHAR 0 20 , 2 Code SQL_Latin1_General_CP1256_CI_AS
3 SQLCHAR 0 100 , 3 Name SQL_Latin1_General_CP1256_CI_AS
4 SQLCHAR 0 25 \r\n 4 Family SQL_Latin1_General_CP1256_CI_AS


collation دیتابیس هم SQL_Latin1_General_CP1256_CI_AS هست
ممنون میشم اگر کسی در این باره کار کرده منو راهنمایی کنه

بهنام بهمنی
سه شنبه 24 شهریور 1388, 13:23 عصر
collation را به arabic_ci_as تغيير دهيد

AminSobati
سه شنبه 24 شهریور 1388, 22:00 عصر
این رو هم آزمایش کنید:
در دستور BULK INSERT عبارت DATAFILETYPE رو معادل 'widechar' قرار بدین

FatemehB
چهارشنبه 25 شهریور 1388, 09:40 صبح
collation را به arabic_ci_as تغيير دهيد

ممنون از پاسختون
اینو امتحان کردم ولی فقط شکل کاراکترهای نامفهوم عوض شد!


این رو هم آزمایش کنید:
در دستور BULK INSERT عبارت DATAFILETYPE رو معادل 'widechar' قرار بدین

آقای ثباتی این مورد را در دستوری شبیه زیر امتحان کردم و جواب گرفتم


BULK INSERT CSVTest
FROM 'c:\b.txt'
WITH
(
DATAFILETYPE='widechar',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)

SELECT *
FROM CSVTest


ولی اگر بخوام این کارو در فایل fmt خودم انجام بدم چه جوری امکان پذیره ؟
ممنون میشم بازم راهنماییم کنید

AminSobati
پنج شنبه 26 شهریور 1388, 21:07 عصر
این رو اطلاع ندارم، برای دیدن جزئیات دقیق Format File به Books Online رجوع کنید. ولی چه اشکالی داره که در دستور BULK INSERT این گزینه رو استفاده کنین؟

SaeedEzzati
یک شنبه 28 شهریور 1389, 22:26 عصر
راه ساده تر که شاید جواب بده اینه که فابل txt رو با unicode سیو کنی
یعنی بازش کن و دوباره با شرایط گفته شده save as کن