এসকিউএল সার্ভারে সিএসভি ফাইল আমদানি করুন


185

আমি .csvএসকিউএল সার্ভার ব্যবহার করে কোনও ফাইল আমদানি করার জন্য সাহায্যের সন্ধান করছি BULK INSERTএবং আমার কয়েকটি প্রাথমিক প্রশ্ন রয়েছে।

সমস্যা:

  1. সিএসভি ফাইলের ডেটার ,মধ্যে (কমা) থাকতে পারে (প্রাক্তন: বিবরণ), তাই আমি কীভাবে এই ডেটাগুলি পরিচালনা করে আমদানি করতে পারি?

  2. যদি ক্লায়েন্ট এক্সেল থেকে সিএসভি তৈরি করে তবে কমা থাকা ডেটা ""(ডাবল কোটস) এর মধ্যে আবদ্ধ থাকে [নীচের উদাহরণ হিসাবে] তাহলে কীভাবে আমদানি এটি পরিচালনা করতে পারে?

  3. কিছু সারিতে খারাপ ডেটা থাকলে, কোনটি আমদানি করে এড়িয়ে যায় তা আমরা কীভাবে ট্র্যাক করব? (আমদানিযোগ্য নয় এমন সারি সারিগুলি কী আমদানি করে)

শিরোনাম সহ সিএসভি নমুনা এখানে:

Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.

এবং এসকিউএল বিবৃতি আমদানি করতে:

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

এসএসএমএস হতে পারে : এক্সেল থেকে ডেটা কীভাবে আমদানি করবেন (কপি / পেস্ট করুন) সহায়তা করতে পারে (আপনি যদি এটি ব্যবহার করতে না চান BULK NSERTবা এর জন্য অনুমতি না পান)।
ডেনিস

উত্তর:


169

ভিত্তিক এসকিউএল সার্ভার সিএসভি আমদানি

1) সিএসভি ফাইলের ডেটার ,মধ্যে (কমা) থাকতে পারে (প্রাক্তন: বিবরণ), তাই আমি কীভাবে এই ডেটাগুলি পরিচালনা করে আমদানি করতে পারি?

সমাধান

যদি আপনি ,একটি সীমানা হিসাবে (কমা) ব্যবহার করেন তবে ক্ষেত্রের টার্মিনেটর হিসাবে কমা এবং আপনার ডেটাতে কমাতে পার্থক্য করার কোনও উপায় নেই। আমি একটি ভিন্ন ব্যবহার করেন FIELDTERMINATORমত ||। কোডটি দেখতে দেখতে হবে এবং এটি কমা এবং একক স্ল্যাশকে পুরোপুরি পরিচালনা করবে।

২) ক্লায়েন্ট যদি এক্সেল থেকে সিএসভি তৈরি করে তবে কমা থাকা ডেটা " ... "(ডাবল কোটস) এর মধ্যে আবদ্ধ থাকে [নীচের উদাহরণ হিসাবে] তাহলে কীভাবে আমদানি এটি পরিচালনা করতে পারে?

সমাধান

আপনি যদি বাল্ক সন্নিবেশ ব্যবহার করেন তবে ডাবল উদ্ধৃতিগুলি হ্যান্ডেল করার কোনও উপায় নেই, সারিগুলিতে ডাবল উদ্ধৃতি সহ ডেটা .োকানো হবে। টেবিলের মধ্যে ডেটা afterোকানোর পরে আপনি সেই ডাবল উদ্ধৃতিগুলি ' ' দিয়ে প্রতিস্থাপন করতে পারেন ।

update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3) কিছু সারিগুলিতে খারাপ ডেটা থাকলে, কোনটি আমদানি করে এড়িয়ে যায় তা আমরা কীভাবে ট্র্যাক করব? (কী আমদানিযোগ্য নয় এমন সারিগুলি সরিয়ে দেয়)?

সমাধান

অবৈধ তথ্য বা বিন্যাসের কারণে টেবিলের মধ্যে লোড না হওয়া সারিগুলি পরিচালনা করতে, ERRORFILE সম্পত্তি ব্যবহার করে হ্যান্ডেল করা যেতে পারে , ত্রুটির ফাইলের নামটি উল্লেখ করুন, এটি ত্রুটিতে থাকা ত্রুটিতে থাকা সারিগুলি লিখবে। কোড মত চেহারা উচিত।

BULK INSERT SchoolsTemp
    FROM 'C:\CSVData\Schools.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
    TABLOCK
    )

1
সাহায্যের জন্য ধন্যবাদ. সমাধান # 1 টি নিবন্ধ করুন: আমরা কি তৈরি করতে পারি || এক্সেল থেকে পৃথক মান ফাইল? কারণ উত্স ফাইলগুলির প্রায় 20% ক্লায়েন্ট দ্বারা এক্সেল ব্যবহার করে তৈরি করা হয়।
প্রভাত

@ প্রভাট কীভাবে আপনি এসকিউএল সার্ভারে এক্সেল ফাইলগুলি লোড করছেন?
বিশ্বনাথ দলভী

আমি যে লোড করছি এটি এই এক্সেল ফাইল নয়। ক্লায়েন্ট। CSV ফাইলগুলি তৈরি করতে এক্সেল ব্যবহার করছে (আমাদের অ্যাপ্লিকেশন আমদানি করে এমন উত্স ডেটার 20%)। এবং আমি জিজ্ঞাসা করছিলাম যে আমরা কীভাবে থাকতে পারি এক্সেল ব্যবহার করে সিএসভি ফাইল তৈরি করি কিনা || কলাম মান পৃথককারী হিসাবে?
প্রভাত

ক্লায়েন্ট কীভাবে এক্সেল থেকে সিএসভি ফাইল তৈরি করে তার উপরে যদি আপনার প্রভাব থাকে তবে আপনি কীভাবে এক্সেলের মধ্যে বিভাজক চরিত্রটি সেট করবেন তা শিখিয়ে দিতে পারেন (এবং ভাল, এটি আর "কমা" পৃথক ফাইল নয়, এটি পাইপ (|) পৃথক, উদাহরণস্বরূপ। হুপগুলি প্রদত্ত যে আপনি এটির জন্য ঝাঁপিয়ে পড়ছেন, এবং আপনার যদি এসএসআইএস থাকে - তবে আমি আপনাকে এটিটি পরীক্ষা করে দেখার পরামর্শ দিই S এসকিউএল সার্ভার ২০১২ এর সংস্করণ এবং পরবর্তীতে খুব শক্তিশালী এসএসআইএস ডিজাইনার রয়েছে (ভিএস ২০১২ এবং তার পরেও) এটি হবে আপনার ক্লায়েন্টকে কেবল
সিএসভির

আমি নিশ্চিত যে এটি পুরোপুরি সঠিক is আপনি এসকিউএল বাল্ক সন্নিবেশে ডাবল উদ্ধৃতিগুলি ব্যবহার করতে পারেন। এই বিষয়টিতে একটি স্ট্যাক ওভারফ্লো রয়েছে এবং বাল্ক সন্নিবেশকে পৃথক পৃথক ডিলিমিনেটর শেখাতে ফর্ম্যাট ফাইলগুলি ব্যবহার করতে পারেন। stackoverflow.com/questions/25726385/... advancesharp.com/blog/1083/...
DtechNet

33

আপনাকে প্রথমে আপনার ডাটাবেসে একটি টেবিল তৈরি করতে হবে যাতে আপনি সিএসভি ফাইল আমদানি করবেন। টেবিলটি তৈরি হওয়ার পরে, নীচের পদক্ষেপগুলি অনুসরণ করুন।

S এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও ব্যবহার করে আপনার ডাটাবেসে লগইন করুন

Database আপনার ডাটাবেসে ডান ক্লিক করুন এবং নির্বাচন করুন Tasks -> Import Data...

Next >বোতামটি ক্লিক করুন

Source ডেটা উত্সের জন্য, নির্বাচন করুন Flat File Source। তারপরে CSV ফাইলটি নির্বাচন করতে ব্রাউজ বোতামটি ব্যবহার করুন। Next >বোতামে ক্লিক করার আগে আপনি কীভাবে ডেটা আমদানি করতে চান তা কনফিগার করতে কিছু সময় ব্যয় করুন ।

Ination গন্তব্যের জন্য, সঠিক ডাটাবেস সরবরাহকারী নির্বাচন করুন (যেমন এসকিউএল সার্ভার ২০১২ এর জন্য, আপনি এসকিউএল সার্ভার নেটিভ ক্লায়েন্ট ১১.০ ব্যবহার করতে পারেন)। সার্ভার নাম লিখুন। Use SQL Server Authenticationরেডিও বোতামটি পরীক্ষা করুন । Next >বোতামে ক্লিক করার আগে ব্যবহারকারীর নাম, পাসওয়ার্ড এবং ডাটাবেস লিখুন ।

Source সোর্স টেবিল এবং ভিউ নির্বাচন করুন উইন্ডোতে, আপনি Next >বোতামটিতে ক্লিক করার আগে ম্যাপিং সম্পাদনা করতে পারেন ।

Check Run immediatelyচেক বক্সটি চেক করুন এবং Next >বোতামটিতে ক্লিক করুন ।

The Finishপ্যাকেজটি চালাতে বোতামে ক্লিক করুন ।

উপরের এই ওয়েবসাইটে পাওয়া গেছে (আমি এটি ব্যবহার করেছি এবং পরীক্ষা করেছি):



1
এটা টেবিলের প্রাক তৈরি করার প্রয়োজন নেই, এটা আমদানি প্রক্রিয়ার সময় তৈরি করা যেতে পারে
bside

1
আমি পছন্দ করি যে আপনি কেবলমাত্র ওয়েব পৃষ্ঠার ওহ-তাই-দরকারী লাইনের সাথে কাটাতে এবং পেস্ট করুন "আপনি কীভাবে ডেটা আমদানি করতে চান তা কনফিগার করতে কিছু সময় ব্যয় করুন" । আমি যা যা খুঁজছিলাম সেটাই ছিল : আমি এটিকে কনফিগার করতে সক্ষম হই না বলে মনে হয়!
অ্যাসপেক্স 14'19

ওহ, এবং "ব্যবহারকারীর এসকিউএল সার্ভার প্রমাণীকরণ রেডিও বোতামটি পরীক্ষা করুন" ভুল, কারণ আপনি উইন্ডোজ প্রমাণীকরণটি খুব ভাল ব্যবহার করতে চাইতে পারেন। এটি আপনার জন্য যা কিছু কাজ করে।
অ্যাসপেক্স

ধন্যবাদ উপরোক্ত পদ্ধতিটি বাস্তবায়নের জন্য চিত্রগুলির সাথে ধাপে ধাপে ধাপে পাওয়া গেছে, যা দেখার জন্য মূল্যবান: qawithexperts.com/article/sql/…
ব্যবহারকারী 3559462

23

২) ক্লায়েন্ট যদি এক্সেল থেকে সিএসভি তৈরি করে তবে কমা থাকা ডেটা "..." এর মধ্যে আবদ্ধ থাকে (ডাবল কোটস) [নীচের উদাহরণ হিসাবে] তাহলে কীভাবে আমদানি এটি পরিচালনা করতে পারে?

আপনার ফর্ম্যাট = 'সিএসভি', ফিল্ডকোয়েট = '"' বিকল্পগুলি ব্যবহার করা উচিত:

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FORMAT = 'CSV', 
    FIELDQUOTE = '"',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

1
নোট যে বিন্যাসে সুনির্দিষ্টভাবে উল্লেখ করা যেহেতু SQL সার্ভার 2017. কেবল প্রাপ্তিসাধ্য
kristianp

13

ডেটা ইস্যুতে কমা সমাধানের সর্বোত্তম, দ্রুত এবং সহজতম উপায় হ'ল উইন্ডোজের তালিকা বিভাজককে কমা ব্যতীত অন্য কোনও কিছু (যেমন পাইপ) সেট করার পরে কমা বিচ্ছিন্ন ফাইল সংরক্ষণ করার জন্য এক্সেল ব্যবহার করা। এরপরে এটি আপনার জন্য একটি পাইপ (বা যাই হোক না কেন) আলাদা করা ফাইল তৈরি করবে যা আপনি তারপরে আমদানি করতে পারবেন। এটি এখানে বর্ণিত হয়


4

আপনার ডেটা সারণীতে CSV ফাইলটি আমদানি করা দরকার

তারপরে আপনি এসকিউএলবুলকপি ব্যবহার করে বাল্ক সারি .োকাতে পারেন

using System;
using System.Data;
using System.Data.SqlClient;

namespace SqlBulkInsertExample
{
    class Program
    {
      static void Main(string[] args)
        {
            DataTable prodSalesData = new DataTable("ProductSalesData");

            // Create Column 1: SaleDate
            DataColumn dateColumn = new DataColumn();
            dateColumn.DataType = Type.GetType("System.DateTime");
            dateColumn.ColumnName = "SaleDate";

            // Create Column 2: ProductName
            DataColumn productNameColumn = new DataColumn();
            productNameColumn.ColumnName = "ProductName";

            // Create Column 3: TotalSales
            DataColumn totalSalesColumn = new DataColumn();
            totalSalesColumn.DataType = Type.GetType("System.Int32");
            totalSalesColumn.ColumnName = "TotalSales";

            // Add the columns to the ProductSalesData DataTable
            prodSalesData.Columns.Add(dateColumn);
            prodSalesData.Columns.Add(productNameColumn);
            prodSalesData.Columns.Add(totalSalesColumn);

            // Let's populate the datatable with our stats.
            // You can add as many rows as you want here!

            // Create a new row
            DataRow dailyProductSalesRow = prodSalesData.NewRow();
            dailyProductSalesRow["SaleDate"] = DateTime.Now.Date;
            dailyProductSalesRow["ProductName"] = "Nike";
            dailyProductSalesRow["TotalSales"] = 10;

            // Add the row to the ProductSalesData DataTable
            prodSalesData.Rows.Add(dailyProductSalesRow);

            // Copy the DataTable to SQL Server using SqlBulkCopy
            using (SqlConnection dbConnection = new SqlConnection("Data Source=ProductHost;Initial Catalog=dbProduct;Integrated Security=SSPI;Connection Timeout=60;Min Pool Size=2;Max Pool Size=20;"))
            {
                dbConnection.Open();
                using (SqlBulkCopy s = new SqlBulkCopy(dbConnection))
                {
                    s.DestinationTableName = prodSalesData.TableName;

                    foreach (var column in prodSalesData.Columns)
                        s.ColumnMappings.Add(column.ToString(), column.ToString());

                    s.WriteToServer(prodSalesData);
                }
            }
        }
    }
}

একটি হয়তো আরও ব্যবহারকারী বান্ধব BulkCopy শ্রেণীর প্রায় মোড়কের busybulkcopy.codeplex.com
busytools

3

আমি কীভাবে এটি সমাধান করব তা এখানে:

  1. এক্সএল-এ কেবল আপনার সিএসভি ফাইলকে এক্সএলএস পত্রক হিসাবে সংরক্ষণ করুন (এটি করে, আপনাকে ডিলিমেটিয়ারগুলি সম্পর্কে চিন্তা করতে হবে না Excel এক্সেলের স্প্রেডশিট ফর্ম্যাটটি একটি সারণী হিসাবে পড়তে হবে এবং সরাসরি এসকিউএল টেবিলের মধ্যে আমদানি করা হবে)

  2. এসএসআইএস ব্যবহার করে ফাইলটি আমদানি করুন

  3. আপনার সন্ধান করা ডেটা বাদ দিতে / সংশোধন করতে আমদানি পরিচালককে একটি কাস্টম স্ক্রিপ্ট লিখুন Or অথবা আপনি যে ডেটাটি সরাতে চাইছেন তা যাচাই করতে একটি মাস্টার স্ক্রিপ্ট চালান)

শুভকামনা


3
ডাউনভোট: এসএসআইএসের সাহায্যে এক্সএলএস ফাইল আমদানি করা ভয়ানক। এসএসআইএস এক্সেল ডেটার ডেটাটাইপগুলি অনুমান করার চেষ্টা করবে, তবে ভুল অনুমান করতে পারে এবং এটি সম্পর্কে আপনি কিছুই করতে পারবেন না। সিএসভি ব্যবহার করা আরও অনেক ভাল।
এনআরিলিং

ঠিক আছে, আমি সিএসভিকেও পরামর্শ দেব, তবে আপনি যদি ওপি-র পরিস্থিতিটি পড়ে থাকেন তবে তাঁর কিছু বিশেষ পরিস্থিতি ছিল বিশেষত ডিলিমিটরদের সাথে যা এক্সএলএস শীট নিয়ে কোনও সমস্যা নয়। সাধারণত এগুলির মতো বিশেষ ক্ষেত্রেগুলির জন্য বিস্তৃত সমাধানের প্রয়োজন হয় না, তবে ডেটা সংরক্ষণ করে এমন একটি স্থির প্রয়োজন fix ফাইলটি আপলোড করার সময়, এসআইএসআইএস আপনাকে উত্স এবং গন্তব্য সারণীর মধ্যে ডেটা ম্যাপিং চয়ন করতে দেয় যা জড়িত প্রচেষ্টাটিকে আবার সহজ করে দেয়। এই কারণেই এই পদ্ধতিটি দ্রুত হ্যাক হিসাবে পরামর্শ দেওয়া হয়েছিল।
জি

1
এসএসআইএস ইতিমধ্যে সিএসভি পাঠ্য সীমানারগুলি পরিচালনা করতে পারে। আপনি যদি যাইহোক এসএসআইএস ব্যবহার করে থাকেন তবে আপনার সিএসভিটিকে একটি এক্সএলএস হিসাবে সংরক্ষণ করার ঝামেলায় যাচ্ছেন প্রথমে আমাকে বিনা কারণে সম্ভাব্য ভাঙ্গন যুক্ত হিসাবে আঘাত করে।
এনআরিলিংহ

এছাড়াও, আমার নিয়মিত সিএসভি ফাইল এক্সেলের জন্য খুব বড়।
অ্যাসপেক্স

3

যেহেতু তারা এসকিউএল আমদানি উইজার্ড ব্যবহার করে না, পদক্ষেপগুলি নীচে হবে:

এখানে চিত্র বর্ণনা লিখুন

  1. ডেটা আমদানি করার বিকল্প বিকল্পগুলির ডাটাবেসে ডান ক্লিক করুন ,

  2. উইজার্ডটি একবার খোলা হয়ে গেলে , আমরা জড়িত হওয়ার জন্য ডেটার প্রকারটি নির্বাচন করি। এই ক্ষেত্রে এটি হবে

ফ্ল্যাট ফাইল উত্স

আমরা সিএসভি ফাইল নির্বাচন করি, আপনি সিএসভিতে টেবিলগুলির ডেটা ধরণের কনফিগার করতে পারেন, তবে এটি সিএসভি থেকে আনাই ভাল।

  1. পরবর্তী ক্লিক করুন এবং যে শেষ বিকল্পটি নির্বাচন করুন

এসকিউএল ক্লায়েন্ট

আমাদের প্রমাণীকরণের ধরণের উপর নির্ভর করে আমরা এটি নির্বাচন করি, এটি শেষ হয়ে গেলে, একটি খুব গুরুত্বপূর্ণ বিকল্প আসে।

  1. আমরা সিএসভিতে টেবিলের আইডি সংজ্ঞায়িত করতে পারি (এটি সুপারিশ করা হয় যে সিএসভির কলামগুলিকে সারণীর ক্ষেত্রগুলির মতো বলা উচিত)। ম্যাপিংস সম্পাদনা করুন বিকল্পে আমরা স্প্রেডশিটের কলাম সহ প্রতিটি টেবিলের পূর্বরূপ দেখতে পারি, যদি আমরা উইজার্ডটি ডিফল্টরূপে আইডি inোকাতে চাই তবে আমরা বিকল্পটি চেক না করে ছেড়ে চলে যাই।

আইডি Enableোকান সক্ষম করুন

(সাধারণত 1 থেকে শুরু হয় না), পরিবর্তে যদি আমাদের সিএসভিতে আইডি সহ একটি কলাম থাকে আমরা সক্ষম আইডি সন্নিবেশ নির্বাচন করি, পরবর্তী পদক্ষেপটি উইজার্ডটি শেষ করা হয়, আমরা এখানে পরিবর্তনগুলি পর্যালোচনা করতে পারি।

অন্যদিকে, নিম্নলিখিত উইন্ডোতে সতর্কতা আসতে পারে, বা আদর্শ সতর্ক করা হ'ল এটিকে অগ্রাহ্য করা, কেবল যদি তারা ত্রুটি ছেড়ে দেয় তবে মনোযোগ দেওয়া প্রয়োজন।

এই লিঙ্কে ছবি রয়েছে


0

এক্সেলটি প্রথমে এক্সেল খোলার মাধ্যমে ফাইলটি আমদানি করুন, তারপরে ডেটাতে যাবেন, টিএক্সটি ফাইল থেকে আমদানি করুন, সিএসভি এক্সটেনশনটি বেছে নিন যা 0 টি প্রাক্সিকৃত মান সংরক্ষণ করবে এবং সেই কলামটি পাঠ্য হিসাবে সংরক্ষণ করবে কারণ এক্সেল অন্যথায় শীর্ষস্থানীয় 0 টি বাদ দেবে (ডাবল ক্লিক করবেন না এক্সেল দিয়ে খোলার জন্য যদি আপনার ক্ষেত্রে একটি ক্ষেত্রের শূন্যসংখ্যার ডেটা থাকে [0] শূন্য]। তারপরে একটি ট্যাব ডিলিমিটেড পাঠ্য ফাইল হিসাবে সংরক্ষণ করুন। আপনি যখন এক্সেলতে আমদানি করছেন তখন আপনি জেনারাল, পাঠ্য ইত্যাদি সংরক্ষণের জন্য একটি বিকল্প পাবেন T টেক্সটটি চয়ন করুন যাতে আপনারকম্প্যানির মতো একটি ক্ষেত্রে কোনও স্ট্রিংয়ের মাঝখানে উদ্ধৃতিগুলি, এলএলসিও সংরক্ষণ করা হয় ...

BULK INSERT dbo.YourTableName
FROM 'C:\Users\Steve\Downloads\yourfiletoIMPORT.txt'
WITH (
FirstRow = 2, (if skipping a header row)
FIELDTERMINATOR = '\t',
ROWTERMINATOR   = '\n'
)

আমি আশা করি আমি ফর্ম্যাট এবং ফিল্ডকোট কার্যকারিতাটি ব্যবহার করতে পারতাম তবে এসএসএমএসের আমার সংস্করণে এটি সমর্থনযোগ্য বলে মনে হচ্ছে না


0

আমি জানি গৃহীত উত্তর আছে কিন্তু এখনও, আমি আমার দৃশ্যকল্প শেয়ার করতে হয়তো সাহায্যের কেউ তাদের সমস্যার সমাধান করতে চান সরঞ্জামগুলি

  • ASP.NET
  • EF কোড-প্রথম আবেদন ACH
  • SSMS
  • এক্সেল

SCENARIO আমি সিএসভি ফর্ম্যাটে যেটি ডেটাসেটটি লোড করছিলাম যা পরে ভিউতে দেখানো হবে আমি বাল্ক লোড ব্যবহার করার চেষ্টা করেছি কিন্তু আমি যেমন BULK LOADব্যবহার করছিলাম তত লোড করতে পারছি না

FIELDTERMINATOR = ','

এবং এক্সেল সেলও ব্যবহার করছিল , , আমিও Flat file sourceসরাসরি ব্যবহার করতে পারিনি কারণ আমি ব্যবহার করছিলামCode-First Approach এসএসএমএস ডিবিতে কেবল মডেল তৈরি করেছি এবং করছি, যে মডেল থেকে আমাকে পরে বৈশিষ্ট্যগুলি ব্যবহার করতে হয়েছিল তা নয়।

সমাধান

  1. আমি ফ্ল্যাট-ফাইল উত্স ব্যবহার করেছি এবং সিএসভি ফাইল থেকে ডিবি টেবিল তৈরি করেছি (এসএসএমএসে ডান ক্লিক করুন ডিবি -> ফ্ল্যাট ফাইল আমদানি করুন -> সিএসভি পথ নির্বাচন করুন এবং নির্দেশাবলী অনুসারে সমস্ত সেটিংস করুন )
  2. ভিজ্যুয়াল স্টুডিওতে তৈরি মডেল ক্লাস (আপনি সমস্ত ডেটাটাইপ এবং নামগুলি বর্ধিত সিএসভি ফাইলের মতো বানাতে হবে)
  3. Add-Migrationনুগেট প্যাকেজ কনসোলে ব্যবহার করুন
  4. আপডেট ডিবি

0

আমি জানি এটি উপরের প্রশ্নের সঠিক সমাধান নয়, তবে আমার জন্য, যখন আমি অনুলিপি করার চেষ্টা করছিলাম তখন এটি একটি দুঃস্বপ্ন ছিল আলাদা সার্ভারে অবস্থিত একটি ডাটাবেস থেকে ডেটা ।

আমি প্রথমে সার্ভার থেকে ডেটা রফতানি করে তার CSV/txtপরে আমদানির চেষ্টা করছিলাম তা করার চেষ্টা করছিলাম এটি আমার স্থানীয় টেবিলটিতে করব।

উভয় সমাধান: CSVএসএসএমএস আমদানি ডেটা উইজার্ডটি আমদানি করার জন্য ক্যোয়ারী লিখে বা ব্যবহার করে সর্বদা ত্রুটি তৈরি করা হত (ত্রুটিগুলি খুব সাধারণ ছিল বলে যে পার্সিংয়ের সমস্যা আছে)। এবং যদিও আমি বিশেষ কিছু করছিলাম না, কেবল রফতানি করে CSVতারপরে লোকালকে আমদানি CSV করার চেষ্টা করছিDB , ত্রুটিগুলি সর্বদা সেখানে ছিল।

আমি ম্যাপিং বিভাগ এবং ডেটা পূর্বরূপটি দেখার চেষ্টা করছিলাম, তবে সর্বদা একটি বড় গণ্ডগোল ছিল। এবং আমি জানি যে মুখ্য সমস্যাটি tableকলামগুলির মধ্যে একটি থেকে আগত ছিল, যা এতে অন্তর্ভুক্ত ছিল JSONএবং SQLপার্সার সেটিকে ভুলভাবে চিকিত্সা করছিল।

সুতরাং অবশেষে, আমি একটি ভিন্ন সমাধান নিয়ে এসেছি এবং অন্য কারও মতো সমস্যা হলে যদি এটি ভাগ করে নিতে চাই।


আমি যা করেছি তা হ'ল আমি বাহ্যিক সার্ভারে এক্সপোর্টিং উইজার্ড ব্যবহার করেছি ।

একই প্রক্রিয়াটির পুনরাবৃত্তি করার পদক্ষেপগুলি এখানে:
1) ডাটাবেসে ডান ক্লিক করুন এবং নির্বাচন করুনTasks -> Export Data...

২) উইজার্ডটি খুললে, পরবর্তী এবং "ডেটা উত্স:" এর জায়গায় "এসকিউএল সার্ভার নেটিভ ক্লায়েন্ট" নির্বাচন করুন।

এখানে চিত্র বর্ণনা লিখুন

বাহ্যিক সার্ভারের ক্ষেত্রে আপনাকে সম্ভবত "প্রমাণীকরণ মোড:" এর জন্য "এসকিউএল সার্ভার প্রমাণীকরণ ব্যবহার করুন" নির্বাচন করতে হবে।

3) পরবর্তী হিট করার পরে , আপনাকে বিবরণ নির্বাচন করতে হবে
তার জন্য, আবার "এসকিউএল সার্ভার নেটিভ ক্লায়েন্ট" নির্বাচন করুন।
এবার আপনি আপনার স্থানীয় (বা অন্য কোনও বাহ্যিক DB) সরবরাহ করতে পারেন DB

এখানে চিত্র বর্ণনা লিখুন

৪) নেক্সট বোতামটি হিট করার পরে আপনার কাছে দুটি বিকল্প রয়েছে পুরো টেবিলটি DBঅন্য থেকে অনুলিপি করুন বা অনুলিপি করার জন্য সঠিক ডেটা নির্দিষ্ট করার জন্য কোয়েরিটি লিখুন। আমার ক্ষেত্রে, আমার পুরো টেবিলের প্রয়োজন নেই (এটি খুব বড় ছিল), তবে এর কিছু অংশ ছিল, তাই আমি "স্থানান্তর করতে ডেটা নির্দিষ্ট করতে একটি প্রশ্ন লিখি" বেছে নিয়েছি chosen

এখানে চিত্র বর্ণনা লিখুন

আমি উইজার্ডে যাওয়ার আগে আলাদা ক্যোয়ারী সম্পাদকটিতে ক্যোয়ারী লিখে এবং পরীক্ষার পরামর্শ দেব।

5) এবং অবশেষে, আপনাকে গন্তব্য সারণি নির্দিষ্ট করতে হবে যেখানে ডেটা নির্বাচন করা হবে।

এখানে চিত্র বর্ণনা লিখুন

আমি ডেটা রফতানিতে ত্রুটি থাকলে বা আপনি যদি ডেটা সম্পর্কে নিশ্চিত নন এবং আপনি যে সঠিক টেবিলটি চান চান সেখানে যাওয়ার আগে আরও বিশ্লেষণ করতে চান তবে আমি এটিকে [dbo].[Query]বা কিছু কাস্টম Tableনাম হিসাবে রাখার পরামর্শ দিই ।

এবং এখন নেক্সট / ফিনিশ বোতামগুলিতে আঘাত করে সরাসরি উইজার্ডের শেষে যান straight


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.