Compare SQL file tables as a file content VS Documentum or Alfresco

Hello - Documentum & Alfresco are 2 examples of Document Content Management (file repository, workflows, notifications, etc), I am interesting in the file content management where system provides file repository and some extra features like check in
/ check out and versioning. Does anyone have tried to replace a file repository with SQL file tables?

You can use SQL Filetables for storing files as well as doing modifcations etc. for getting versioning you can enable change management or implement audit triggers in them.
Here are some helpful links
http://visakhm.blogspot.in/2012/07/working-with-filetables-in-sql-2012.html
http://visakhm.blogspot.in/2012/07/triggers-on-filetables-in-sql-2012.html
http://visakhm.blogspot.in/2013/09/implementing-transaction-over-file.html
Check in checkout will not be available by default. You may need to implement it using some flags. My question is why cant you go for a versioncontrol software then like TFS? why reinvent the wheel?
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
Visakh
My MSDN Page
My Personal Blog
My Facebook Page

Similar Messages

  • How to delete rows in the SQL Server table based on the contents of Excel file

    Hello, everyone,
    I have an Excel file which contains data for certain dates. I need to load it in a SQL Server table. But before doing that, I need to check if the table already contains data for the dates in the Excel file. If it does, I need to delete those data
    first. Not sure what is the best and efficient way to do this. Your help and guidance would be much appreciated.
    Thank you in advance.

    there are multiple ways of doing this
    Fastest method would be below
    1. Have a data flow task using excel source. Then add a OLEDB destination to dump the data to a staging table
    2. Have a Execute sql task to delete data from your actual table based on staging table data. The query would look like
    DELETE t
    FROM YourTable t
    WHERE EXISTS (SELECT 1
    FROM StagingTable
    WHERE DateField = t.DateField)
    3. Have another execute sql task to do final insert like
    INSERT YourTable (Col1,Col2,...)
    SELECT Col1,Col2,..
    FROM StagingTable
    the above operations will be set based and faster
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • Using JSplitPane for Comparing two Files/Contents

    Hi Java Gurus,
    I want to develope a Comparison tool which compares 2 jar files and report the difference in a user friendly manner. Everything is fine and i selected the JSplitPane to display the difference report. I face some problems in doing it exactly simillar way of presenting like a Comparison tools which is there in VSS.
    I created 2 panels and added in a splitpane.
    one panel contains the content of first jar file and another panel contains the content of second jar file.
    The content are added in a textarea and the textarea is added to a scrollpane, which is added to the panel.
    If i fix some size to Textarea, when i expand the Splitpane, the size is not getting expanded accordingly.
    if i remove the size for textarea, the content is not displayed.
    Can anyon give some suggestion.
    Have anybody developed a GUI using JSplitPane simmilar to any Difference Tool simillar to VSS.
    expecting your replies.
    Raffi

    Hi,
    Eventhough the left and right pane are not synchronized, It is showing the Differences.
    I have changed the JTextArea to JTextPane to have control on each of the String i am inserting.
    It is fine. but when i am doing the comparison for the second time, i am removing the content of the Document (of the JTextPane) and adding the new Content to the Document (of the JTextPane).
    While i am printing the length and text after removing the Old Content (in console), i am getting 0, "". But in the GUI old content are not removed and new content keeps on appending, eventhough i do updateUI() and validate().
    Is that a BUG of JTextPane?????????????
    Can any One Figure it out.
    My Code is Here:
    import java.io.*;
    import java.util.zip.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.text.*;
    * put your documentation comment here
    public class CheckZipFile extends JFrame {
    private JLabel firstZip = null;
    private JLabel secondZip = null;
    private JTextField firstZipName = null;
    private JTextField secondZipName = null;
    private JButton compare = null;
    private JPanel mainPanel = null;
    private JFileChooser fileChooser = null;
    private JButton chooseButton1 = null;
    private JButton chooseButton2 = null;
    private StringBuffer buffer = null;
    private StringBuffer buffer1 = null;
    private StringBuffer buffer2 = null;
    private ApolloFileFilter zipFilter;
    private JTextPane first = null;
    private JTextPane second = null;
    private Document doc1 = null;
    private Document doc = null;
    * put your documentation comment here
    public CheckZipFile () {
    initialize();
    buildGUI();
    addWindowListener();
    setLookAndFeel();
    this.pack();
    * put your documentation comment here
    private void initialize () {
    buffer = new StringBuffer();
    buffer1 = new StringBuffer();
    buffer2 = new StringBuffer();
    zipFilter = new ApolloFileFilter(new String[] {
    "zip", "jar"
    }, "ZIP and JAR Files");
    fileChooser = new JFileChooser(new File("c:\\"));
    //fileChooser.setAcceptAllFileFilterUsed(false);
    fileChooser.addChoosableFileFilter(zipFilter);
    * put your documentation comment here
    private void setLookAndFeel () {
    try {
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    SwingUtilities.updateComponentTreeUI(this);
    if (fileChooser != null) {
    SwingUtilities.updateComponentTreeUI(fileChooser);
    } catch (UnsupportedLookAndFeelException exc) {
    System.out.println("Unsupported Look And Feel:" +
    exc);
    } catch (IllegalAccessException exc) {
    System.out.println("IllegalAccessException Error:"
    + exc);
    } catch (ClassNotFoundException exc) {
    System.out.println("ClassNotFoundException Error:"
    + exc);
    } catch (InstantiationException exc) {
    System.out.println("InstantiateException Error:"
    + exc);
    * put your documentation comment here
    private void buildGUI () {
    mainPanel = createPanel();
    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(mainPanel, BorderLayout.CENTER);
    this.getContentPane().add(createDifferencePanel(), BorderLayout.SOUTH);
    this.setSize(700, 450);
    SwingUtilities.updateComponentTreeUI(this);
    * put your documentation comment here
    * @return
    private JPanel createPanel () {
    JPanel main = new JPanel() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(300, 90);
    main.setLayout(new GridLayout(3, 3));
    firstZip = new JLabel("First Jar/Zip File:") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(firstZip);
    firstZipName = new JTextField() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(firstZipName);
    chooseButton1 = new JButton("Choose File 1") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(chooseButton1);
    chooseButton1.addActionListener(new ButtonListener());
    secondZip = new JLabel("Second Jar/Zip File:") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(secondZip);
    secondZipName = new JTextField() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(secondZipName);
    chooseButton2 = new JButton("Choose File 2") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(chooseButton2);
    chooseButton2.addActionListener(new ButtonListener());
    JLabel temp1 = new JLabel("") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(temp1);
    compare = new JButton("Compare") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    compare.addActionListener(new ButtonListener());
    main.add(compare);
    JLabel temp2 = new JLabel("") {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(100, 30);
    main.add(temp2);
    return main;
    * put your documentation comment here
    * @param fileContent1
    * @param fileContent2
    private void updateGUI (String fileContent1, String fileContent2) {
    System.out.println("Came here UpdateGUI");
    updateDifferencePanel(fileContent1, fileContent2);
    System.out.println("Came here UpdateGUI after call");
    SwingUtilities.updateComponentTreeUI(this);
    * put your documentation comment here
    * @return
    private JSplitPane createDifferencePanel () {
    JPanel firstPanel = new JPanel() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(350, 360);
    first = new JTextPane();
    initStylesForTextPane(first);
    doc1 = first.getDocument();
    JScrollPane scroll1 = new JScrollPane(first);
    scroll1.setPreferredSize(new Dimension(325, 360));
    scroll1.setMinimumSize(new Dimension(100, 100));
    firstPanel.add(scroll1);
    first.updateUI();
    first.validate();
    JPanel secondPanel = new JPanel() {
    * put your documentation comment here
    * @return
    public Dimension getPrefferedSize () {
    return new Dimension(350, 360);
    second = new JTextPane();
    initStylesForTextPane(second);
    doc = second.getDocument();
    JScrollPane scroll2 = new JScrollPane(second);
    scroll2.setPreferredSize(new Dimension(325, 360));
    scroll2.setMinimumSize(new Dimension(100, 100));
    secondPanel.add(scroll2);
    second.updateUI();
    second.validate();
    JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
    firstPanel, secondPanel);
    splitPane.setDividerLocation(0.5);
    splitPane.updateUI();
    splitPane.validate();
    splitPane.setPreferredSize(new Dimension(700, 360));
    return splitPane;
    * put your documentation comment here
    * @param fileContent1
    * @param fileContent2
    private void updateDifferencePanel (String fileContent1,
    String fileContent2) {
    System.out.println("Came here");
    try {
    doc1 = first.getDocument();
    System.out.println("Text bef: " + first.getText());
    System.out.println("Length bef: " + doc1.getLength());
    doc1.remove(0, doc1.getLength());
    System.out.println("Length aft: " + doc1.getLength());
    System.out.println("Text aft: " + first.getText());
    doc1.insertString(doc1.getLength(), "test", first.getStyle("regular"));
    first.updateUI();
    first.validate();
    } catch (BadLocationException ble1) {
    ble1.printStackTrace();
    StringTokenizer tokens1 = new StringTokenizer(fileContent1,
    String token1 = "";
    String text1 = "";
    String differs1 = "false";
    int indexOfColon1 = -1;
    int count1 = 0;
    while (tokens1.hasMoreTokens()) {
    token1 = (String)tokens1.nextToken();
    count1++;
    indexOfColon1 = token1.lastIndexOf(":");
    text1 = token1.substring(0, indexOfColon1);
    differs1 = token1.substring(indexOfColon1 + 1);
    try {
    if (count1 == 1)
    System.out.println("Start: " + doc1.getLength());
    if (differs1.equals("true"))
    doc1.insertString(doc1.getLength(), text1
    + ":", first.getStyle("bold"));
    else
    doc1.insertString(doc1.getLength(), text1
    + ":", first.getStyle("regular"));
    if ((count1%3) == 0)
    doc1.insertString(doc1.getLength(), "\n",
    first.getStyle("regular"));
    } catch (BadLocationException ble1) {
    ble1.printStackTrace();
    first.updateUI();
    first.validate();
    try {
    System.out.println("Length bef: " + doc.getLength());
    doc.remove(0, doc.getLength());
    System.out.println("Length aft: " + doc.getLength());
    second.updateUI();
    second.validate();
    } catch (BadLocationException ble1) {
    ble1.printStackTrace();
    StringTokenizer tokens = new StringTokenizer(fileContent2,
    String token = "";
    String text = "";
    String differs = "false";
    int indexOfColon = -1;
    int count = 0;
    while (tokens.hasMoreTokens()) {
    token = (String)tokens.nextToken();
    count++;
    indexOfColon = token.lastIndexOf(":");
    text = token.substring(0, indexOfColon);
    differs = token.substring(indexOfColon + 1);
    try {
    if (differs.equals("true"))
    doc.insertString(doc.getLength(), text +
    ":", second.getStyle("bold"));
    else
    doc.insertString(doc.getLength(), text +
    ":", second.getStyle("regular"));
    if ((count%3) == 0)
    doc.insertString(doc.getLength(), "\n",
    second.getStyle("regular"));
    } catch (BadLocationException ble) {
    ble.printStackTrace();
    second.updateUI();
    second.validate();
    * put your documentation comment here
    * @param textPane
    protected void initStylesForTextPane (JTextPane textPane) {
    //Initialize some styles.
    Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
    Style regular = textPane.addStyle("regular", def);
    StyleConstants.setFontFamily(def, "SansSerif");
    Style s = textPane.addStyle("italic", regular);
    StyleConstants.setItalic(s, true);
    s = textPane.addStyle("bold", regular);
    StyleConstants.setBold(s, true);
    s = textPane.addStyle("small", regular);
    StyleConstants.setFontSize(s, 10);
    s = textPane.addStyle("large", regular);
    StyleConstants.setFontSize(s, 16);
    s = textPane.addStyle("icon", regular);
    StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);
    StyleConstants.setIcon(s, new ImageIcon("images/Pig.gif"));
    s = textPane.addStyle("button", regular);
    StyleConstants.setAlignment(s, StyleConstants.ALIGN_CENTER);
    JButton button = new JButton(new ImageIcon("images/sound.gif"));
    button.setMargin(new Insets(0, 0, 0, 0));
    button.addActionListener(new ActionListener() {
    * put your documentation comment here
    * @param e
    public void actionPerformed (ActionEvent e) {
    Toolkit.getDefaultToolkit().beep();
    StyleConstants.setComponent(s, button);
    * put your documentation comment here
    private void addWindowListener () {
    this.addWindowListener(new WindowAdapter() {
    * put your documentation comment here
    * @param we
    public void windowClosed (WindowEvent we) {
    CheckZipFile.this.dispose();
    System.exit(1);
    * put your documentation comment here
    * @param we
    public void windowClosing (WindowEvent we) {
    CheckZipFile.this.dispose();
    System.exit(1);
    * put your documentation comment here
    * @param argv[]
    * @exception Exception
    public static void main (String argv[]) throws Exception {
    CheckZipFile compareZip = new CheckZipFile();
    compareZip.pack();
    compareZip.setVisible(true);
    * put your documentation comment here
    public class ButtonListener
    implements ActionListener {
    * put your documentation comment here
    * @param ae
    public void actionPerformed (ActionEvent ae) {
    if (ae.getSource() == chooseButton1) {
    int retval = fileChooser.showDialog(CheckZipFile.this,
    "Select");
    if (retval == JFileChooser.APPROVE_OPTION) {
    File theFile = fileChooser.getSelectedFile();
    if (theFile != null) {
    File[] files = fileChooser.getSelectedFiles();
    if (fileChooser.isMultiSelectionEnabled()
    && files != null && files.length > 1) {
    String filenames = "";
    for (int i = 0; i < files.length; i++) {
    filenames = filenames + "\n"
    + files.getPath();
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose these files: \n"
    + filenames + "\n Multiple Selection Should not be done here");
    else if (theFile.isDirectory()) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose this directory: "
    + fileChooser.getSelectedFile().getPath()
    + "\n Please select a Zip File or jar File");
    else {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose this file: " +
    fileChooser.getSelectedFile().getPath());
    firstZipName.setText(fileChooser.getSelectedFile().getPath());
    return;
    else if (retval == JFileChooser.CANCEL_OPTION) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "User cancelled operation. No file was chosen.");
    else if (retval == JFileChooser.ERROR_OPTION) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "An error occured. No file was chosen.");
    else {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Unknown operation occured.");
    if (ae.getSource() == chooseButton2) {
    int retval = fileChooser.showDialog(CheckZipFile.this,
    "Select");
    if (retval == JFileChooser.APPROVE_OPTION) {
    File theFile = fileChooser.getSelectedFile();
    if (theFile != null) {
    File[] files = fileChooser.getSelectedFiles();
    if (fileChooser.isMultiSelectionEnabled()
    && files != null && files.length > 1) {
    String filenames = "";
    for (int i = 0; i < files.length; i++) {
    filenames = filenames + "\n"
    + files[i].getPath();
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose these files: \n"
    + filenames + "\n Multiple Selection Should not be done here");
    else if (theFile.isDirectory()) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose this directory: "
    + fileChooser.getSelectedFile().getPath()
    + "\n Please select a Zip File or jar File");
    else {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "You chose this file: " +
    fileChooser.getSelectedFile().getPath());
    secondZipName.setText(fileChooser.getSelectedFile().getPath());
    return;
    else if (retval == JFileChooser.CANCEL_OPTION) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "User cancelled operation. No file was chosen.");
    else if (retval == JFileChooser.ERROR_OPTION) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "An error occured. No file was chosen.");
    else {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Unknown operation occured.");
    if (ae.getSource() == compare) {
    String file1 = firstZipName.getText();
    String file2 = secondZipName.getText();
    if (file1 == null || file2 == null) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Enter / Select the Files to be compared");
    return;
    if (file1.equals("") || file2.equals("")) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Enter / Select the Files to be compared");
    return;
    try {
    ZipFile zip1 = new ZipFile(file1);
    ZipFile zip2 = new ZipFile(file2);
    int size1 = zip1.size();
    int size2 = zip2.size();
    if (size1 != size2) {
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Size of both the jars are not same");
    return;
    Enumeration entries1 = zip1.entries();
    Enumeration entries2 = zip2.entries();
    ZipEntry entry1 = null;
    ZipEntry entry2 = null;
    String name1 = "";
    String name2 = "";
    long filesize1 = 0;
    long filesize2 = 0;
    long time1;
    long time2;
    //StringBuffer detail = new StringBuffer();
    boolean nameDiffers = false;
    boolean sizeDiffers = false;
    boolean timeDiffers = false;
    buffer.append(file1 + "\t\t\t" + file2 +
    "\n______________________________________________________________________\n");
    //buffer1.append("\t\t" + file1 + "\n");
    //buffer2.append("\t\t" + file2 + "\n");
    int length = buffer.length();
    for (int x = 0; x < size1; x++) {
    nameDiffers = false;
    sizeDiffers = false;
    timeDiffers = false;
    entry1 = (ZipEntry)entries1.nextElement();
    entry2 = (ZipEntry)entries2.nextElement();
    name1 = entry1.getName();
    name2 = entry2.getName();
    filesize1 = entry1.getSize();
    filesize2 = entry2.getSize();
    time1 = entry1.getTime();
    time2 = entry2.getTime();
    if (!name1.equals(name2)) {
    //System.out.println("Name of the Entries in both the Jars are not same:\n"+ entry1.getName() + " : " + entry2.getName() );
    nameDiffers = true;
    //return;
    //else
    //     System.out.println("Name: " +entry1.getName());
    if (filesize1 != filesize2) {
    //System.out.println("Size of the Entries in both the Jars are not same:\n"+ entry1.getSize() + " : " + entry2.getSize() );
    sizeDiffers = true;
    //return;
    if (time1 != time2) {
    //System.out.println("Time of the Entries in both the Jars are not same:\n"+ entry1.getTime() + " : " + entry2.getTime() );
    timeDiffers = true;
    //return;
    if (nameDiffers || sizeDiffers || timeDiffers) {
    if (filesize1 != 0 && filesize2 !=
    0) {
    buffer.append(name1 + ":" +
    filesize1 + ":" + new java.util.Date(time1)
    + "\t" + name2 + ":"
    + filesize2 + ":" +
    new java.util.Date(time2)
    + "\n");
    buffer1.append(name1 + ":" +
    nameDiffers + ";" +
    filesize1 + ":" + sizeDiffers
    + ";" + new java.util.Date(time1).toString()
    + ":" + timeDiffers +
    buffer2.append(name2 + ":" +
    nameDiffers + ";" +
    filesize2 + ":" + sizeDiffers
    + ";" + new java.util.Date(time2).toString()
    + ":" + timeDiffers +
    if (length == buffer.length())
    JOptionPane.showMessageDialog(CheckZipFile.this,
    "Both the Zip / Jar Files are Identical");
    else {
    getToolkit().beep();
    //System.out.println(buffer.toString());
    updateGUI(buffer1.toString(), buffer2.toString());
    getToolkit().beep();
    } catch (Exception ex) {
    ex.printStackTrace();

  • Comparing SQL Data Results with CSV file contents

    I have the following scenario that I need to resolve and I'm unsure of how to approach it. Let me explain what I am needing and what I have currently done.
    I've created an application that automatically marks assessments that delegates complete by comparing SQL Data to CSV file data. I'm using C# to build the objects required that will load the data from SQL into a dataset which is then compared to the
    associated CSV file that contains the required results to mark against.
    Currently everything is working as expected but I've noticed that if there is a difference in the number of rows returned into the SQL-based dataset, then my application doesn't mark the items at all.
    Here is an example:
    ScenarioCSV contains 4 rows with 8 columns of information, however, let's say that the delegate was only able to insert 2 rows of data into the dataset. When this happens it marks everything wrong because row 1 in both CSV and dataset files were correct,
    however, row 2 in the dataset holds the results found in row 4 in the CSV file and because of this it is comparing it against row 2 in the CSV file.
    How can I check whether a row, regardless of its order, can be marked as it does exist but not in the same order, so I don't want the delegate to lose marks just because the row data in the dataset is not perfectly in the same order of the row data
    in the CSV file???
    I'm at a loss and any assistance will be of huge help to me. I have implemented a ORDER BY clause in the dataset and ensured that the same order is set in the CSV file. This has helped me for scenarios where there are the right number of rows in the dataset,
    but as soon as there is 1 row that is missing in the dataset, then the marking just doesn't allow for any marks for both rows even if the data is correct.
    I hope I've made sense!! If not, let me know and I will provide a better description and perhaps examples of the dataset data and the csv data that is being compared.
    Thanks in advance....

    I would read the CSV into a datatable using oledb. Below is code I wrote a few weeks ago to do this.
    Then you can compare two datatables by a common primary key (like ID number)
    Below is the webpage to compare two datatables
    http://stackoverflow.com/questions/10984453/compare-two-datatables-for-differences-in-c
    You can find lots of examples by perform following google search
    "c# linq compare two dattatable"
    //Creates a CSVReader Class
    public class CSVReader
    public DataSet ReadCSVFile(string fullPath, bool headerRow)
    string path = fullPath.Substring(0, fullPath.LastIndexOf("\\") + 1);
    string filename = fullPath.Substring(fullPath.LastIndexOf("\\") + 1);
    DataSet ds = new DataSet();
    try
    if (File.Exists(fullPath))
    string ConStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}" + ";Extended Properties=\"Text;HDR={1};FMT=Delimited\\\"", path, headerRow ? "Yes" : "No");
    string SQL = string.Format("SELECT * FROM {0}", filename);
    OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, ConStr);
    adapter.Fill(ds, "TextFile");
    ds.Tables[0].TableName = "Table1";
    foreach (DataColumn col in ds.Tables["Table1"].Columns)
    col.ColumnName = col.ColumnName.Replace(" ", "_");
    catch (Exception ex)
    MessageBox.Show(ex.Message);
    return ds;
    jdweng

  • How can I load a .xlsx File into a SQL Server Table using a Foreach Loop Container in SSIS?

    I know I've REALLY struggled with this before. I just don't understand why this has to be soooooo difficult.
    I can very easily do a straight Data Pump of a .xlsX File into a SQL Server Table using a normal Excel Connection and a normal Excel Source...simply converting Unicode to DT_STR and then using an OLE DB Destination of the SQL Server Table.
    If I want to make the SSIS Package a little more flexible by allowing multiple .xlsX spreadsheets to be pumped in by using a Foreach Loop Container, the whole SSIS Package seems to go to hell in a hand basket. I simply do the following...
    Put the Data Flow Task within the Foreach Loop Container
    Add the Variable Mapping Variable User::FilePath that I defined as a Variable and a string within the FOreach Loop Container
    I change the Excel Connection and its Expression to be ExcelFilePath ==> @[User::FilePath]
    I then try and change the Excel Source and its Data Access Mode to Table Name or view name variable and provide the Variable Name User::FilePath
    And that's when I run into trouble...
    Exception from HRESULT: 0xC02020E8
    Error at Data Flow Task [Excel Source [56]]:SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occured. Error code: 0x80004005.
    Error at Data Flow Task [Excel Source [56]]: Opening a rowset for "...(the EXACT Path and .xlsx File Name)...". Check that the object exists in the database. (And I know it's there!!!)
    I don't understand by adding a Foreach Loop Container to try and make this as efficient as possible has caused such an error unless I'm overlooking something. I have even tried delaying my validations and that doesn't seem to help.
    I have looked hard in Google and even YouTube to try and find a solution for this but for the life of me I cannot seem to find anything on pumping a .xlsX file into SQL Server using a Foreach Loop Container.
    Can ANYONE please help me out here? I'm at the end of my rope trying to get this to work. I think the last time I was in this quandry, trying to pump a .xlsX File into a SQL Server Table using a Foreach Loop Container in SSIS, I actually wrote a C# Script
    to write the contents of the .xlsX File into a .csv File and then Actually used the .csv File to pump the data into a SQL Server Table.
    Thanks for your review and am hoping and praying for a reply and solution.

    Hi ITBobbyP,
    If I understand correctly, you want to load data from multiple sheets in an .xlsx file into a SQL Server table.
    If in this scenario, please refer to the following tips:
    The Foreach Loop container should be configured as shown below:
    Enumerator: Foreach ADO.NET Schema Rowset Enumerator
    Connection String: The OLE DB Connection String for the excel file.
    Schema: Tables.
    In the Variable Mapping, map the variable to Sheet_Name, and change the Index from 0 to 2.
    The connection string for Excel Connection Manager is the original one, we needn’t make any change.
    Change Table Name or View name to the variable Sheet_Name.
    If you want to load data from multiple sheets in multiple .xlsx files into a SQL Server table, please refer to following thread:
    http://stackoverflow.com/questions/7411741/how-to-loop-through-excel-files-and-load-them-into-a-database-using-ssis-package
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • Can we compare file contents of two files in the Application server?

    Hi,
    A file is generated daily to the application server. and i need to compare the generated file to the file generated on the previous day and prepare a report.
    Can we compare file contents of two generated files present in the Application server?
    If there is any alternative, please suggest.
    regards
    cs

    yes we can compare if the app server is Unix.
    cmp compare two binary files and report if different
    cmp is silent if the files are the
         same;
    if they differ, the byte and line number at which the first
    difference occurred is reported.
    REPORT ZUNIX line-size 400
                    no standard page heading.
    data: unixcom like   rlgrap-filename.  
    unixcom = 'cmp file1 file2'.
    data: begin of tabl occurs 500,
            line(400),
          end of tabl.
    data: lines type i.
    start-of-selection.
      refresh tabl.
      call 'SYSTEM' id 'COMMAND' field unixcom
                    id 'TAB'     field tabl[].
    "if the files are different then you will some content in tabl
    Regards
    Viajy  Babu Dudla

  • Loading File name and file contents into two separate tables using Sqlloadr

    Hi All,
    I have situtation like to load File contents into One table and File name into one table . File comes with .txt extension
    Example :
    File name : product_09_abc.txt
    File contents :
    Productcode
    ABC
    CDE
    EFT
    Can you please help me out this how can we acheive this using SQLLOADER.

    SQL*Loader will not pass through the filename for you to be able to insert into a table.
    You will need to have a controlling o/s script that picks up the file name, calls sql*loader and then also call's an SQL script (using sql*plus?) to insert the filename into a.n.other table.

  • Compare 2 schemas and get the difference with .sql file.

    Hi,
    I am using ORACLE DATABASE 11g R2 and ORACLE Linux 5.
    I want to perform a very lengthy process and want to make it automated.
    I am having a software named as SVN. In which all the developers keep their updated scripts.
    We have 2 schema's one is used for developement and when all the development seems good we implement the scripts on the final schema which is used by testing people also.
    Now every day we need to check the modifications in the development schema, that we do by observing the updated scripts in the SVN software. Now we get the scripts which are modified.
    We will fire this scripts to a sample schema then we will compare the objects in this schema and the same objects in our final schema. If the objects in sample schema is different than the final schema it should give me the
    script to create the same type object in the final schema.
    Below is a proper example to explain :-
    Developement Schema :- 'DEV'
    SVN Script Schema :- 'SVNscript'
    Main Schema :- 'MAIN'
    1) On Monday developers modified/added 4 tables in the development schema names 'DEV' after working for a day they found that the changes are necessary and so checked-in in the SVN software.
    2) On tuesday morning we found 4 scripts which has been modified/added in the SVN.
    The Scripts were as follows :-
    1St table :- An extra column was added.
    2nd table :- An index was created on it.
    3rd table :- 2 Columns were dropped from it.
    4th table :- A new table is added in the schema.
    Now taking these 4 scripts i am going to execute it in a sample schema named :- SVNscript
    SVNscript schema will have now 4 tables with proper properties(columns,indexes,...). Now this is the final table structure as we want in our 'MAIN' schema .
    Coming to MAIN schema which is our most important schema and all the development work is finally posted here.Considering MAIN schema is having around 1000 tables,500 function/procedure/package and many more DB objects.
    I want to compare(one way compare) from SVNscript schema --> MAIN schema :- That the objects present in the SVNscripts schema is same or not in the MAIN schema. If its not same then this code should generate a .sql script for me which i should be able to fire on the MAIN schema.
    The output .sql scripts should be something like this :-
    1st Table :- Alter table add...
    2nd Table :- Create index on table...
    3rd Table :- Alter table drop...
    4th table :- Create table tablename...
    I found a link while trying this but it is not the perfect fit to my requirement
    http://www.dbspecialists.com/files/scripts/compare_schemas.sql
    Please let me know the best code to compare 2 schemas and get a .sql file as output of the difference.
    Thanks in advance.

    Yes I followed the tutorial properly this time. Still i have a few queries :-
    1) This is returning me the 'ALTER TABLE...' statement but how to make it more efficient to return all the DDL dependent on the table, Like index,trigger,view...
    2) I want to compare objects in a different schema on a different db. I have created an DBLINK but how to use it ... can i use it like
    DBMS_METADATA.OPEN('TABLE'," Network_link_name " );Can you please give me some clear about it.
    3) I created a table 'TAB1' with which i want to compare a 'TAB1' in other schema.I was not getting how to compare on remote dblink so,I created the same table with the following code in the same schema
    CREATE TABLE TAB1_OLD as select * from TAB1@DBLINK where 1=2;Now when i fire the below query to get the alter difference I get the following error :-
    SQL> SELECT get_table_alterddl('TAB1','TAB1_old') FROM dual;
    SELECT get_table_alterddl('TAB1','TAB1_old') FROM dual
    ORA-31603: object "TAB1_old" of type TABLE not found in schema "SVNCHECK"
    ORA-06512: at "SYS.DBMS_METADATA", line 5225
    ORA-06512: at "SYS.DBMS_METADATA", line 5189
    ORA-06512: at "SVNCHECK.GET_TABLE_SXML", line 17
    ORA-06512: at "SVNCHECK.COMPARE_TABLE_SXML", line 12
    ORA-06512: at "SVNCHECK.GET_TABLE_ALTERXML", line 11
    ORA-06512: at "SVNCHECK.GET_TABLE_ALTERDDL", line 11
    Can you please guide me why i am getting this error?
    I have made sure that TAB1_OLD table has been created and the entries are also present in the data dictionary tables.
    SQL> select * from tab1_old;
    EMPNO ENAME                  MGR DEPTNO
    ----- -------------------- ----- ------The only difference is that this table was created with CREATE TABLE AS SELECT statement ....
    Thanks.

  • How to convert from SQL Server table to Flat file (txt file)

    I need To ask question how convert from SQL Server table to Flat file txt file

    Hi
    1. Import/Export wizened
    2. Bcp utility
    3. SSIS 
    1.Import/Export Wizard
    First and very manual technique is the import wizard.  This is great for ad-hoc and just to slam it in tasks.
    In SSMS right click the database you want to import into.  Scroll to Tasks and select Import Data…
    For the data source we want out zips.txt file.  Browse for it and select it.  You should notice the wizard tries to fill in the blanks for you.  One key thing here with this file I picked is there are “ “ qualifiers.  So we need to make
    sure we add “ into the text qualifier field.   The wizard will not do this for you.
    Go through the remaining pages to view everything.  No further changes should be needed though
    Hit next after checking the pages out and select your destination.  This in our case will be DBA.dbo.zips.
    Following the destination step, go into the edit mappings section to ensure we look good on the types and counts.
    Hit next and then finish.  Once completed you will see the count of rows transferred and the success or failure rate
    Import wizard completed and you have the data!
    bcp utility
    Method two is bcp with a format file http://msdn.microsoft.com/en-us/library/ms162802.aspx
    This is probably going to win for speed on most occasions but is limited to the formatting of the file being imported.  For this file it actually works well with a small format file to show the contents and mappings to SQL Server.
    To create a format file all we really need is the type and the count of columns for the most basic files.  In our case the qualifier makes it a bit difficult but there is a trick to ignoring them.  The trick is to basically throw a field into the
    format file that will reference it but basically ignore it in the import process.
    Given that our format file in this case would appear like this
    9.0
    9
    1 SQLCHAR 0 0 """ 0 dummy1 ""
    2 SQLCHAR 0 50 "","" 1 Field1 ""
    3 SQLCHAR 0 50 "","" 2 Field2 ""
    4 SQLCHAR 0 50 "","" 3 Field3 ""
    5 SQLCHAR 0 50 ""," 4 Field4 ""
    6 SQLCHAR 0 50 "," 5 Field5 ""
    7 SQLCHAR 0 50 "," 6 Field6 ""
    8 SQLCHAR 0 50 "," 7 Field7 ""
    9 SQLCHAR 0 50 "n" 8 Field8 ""
    The bcp call would be as follows
    C:Program FilesMicrosoft SQL Server90ToolsBinn>bcp DBA..zips in “C:zips.txt” -f “c:zip_format_file.txt” -S LKFW0133 -T
    Given a successful run you should see this in command prompt after executing the statement
    Starting copy...
    1000 rows sent to SQL Server. Total sent: 1000
    1000 rows sent to SQL Server. Total sent: 2000
    1000 rows sent to SQL Server. Total sent: 3000
    1000 rows sent to SQL Server. Total sent: 4000
    1000 rows sent to SQL Server. Total sent: 5000
    1000 rows sent to SQL Server. Total sent: 6000
    1000 rows sent to SQL Server. Total sent: 7000
    1000 rows sent to SQL Server. Total sent: 8000
    1000 rows sent to SQL Server. Total sent: 9000
    1000 rows sent to SQL Server. Total sent: 10000
    1000 rows sent to SQL Server. Total sent: 11000
    1000 rows sent to SQL Server. Total sent: 12000
    1000 rows sent to SQL Server. Total sent: 13000
    1000 rows sent to SQL Server. Total sent: 14000
    1000 rows sent to SQL Server. Total sent: 15000
    1000 rows sent to SQL Server. Total sent: 16000
    1000 rows sent to SQL Server. Total sent: 17000
    1000 rows sent to SQL Server. Total sent: 18000
    1000 rows sent to SQL Server. Total sent: 19000
    1000 rows sent to SQL Server. Total sent: 20000
    1000 rows sent to SQL Server. Total sent: 21000
    1000 rows sent to SQL Server. Total sent: 22000
    1000 rows sent to SQL Server. Total sent: 23000
    1000 rows sent to SQL Server. Total sent: 24000
    1000 rows sent to SQL Server. Total sent: 25000
    1000 rows sent to SQL Server. Total sent: 26000
    1000 rows sent to SQL Server. Total sent: 27000
    1000 rows sent to SQL Server. Total sent: 28000
    1000 rows sent to SQL Server. Total sent: 29000
    bcp import completed!
    BULK INSERT
    Next, we have BULK INSERT given the same format file from bcp
    CREATE TABLE zips (
    Col1 nvarchar(50),
    Col2 nvarchar(50),
    Col3 nvarchar(50),
    Col4 nvarchar(50),
    Col5 nvarchar(50),
    Col6 nvarchar(50),
    Col7 nvarchar(50),
    Col8 nvarchar(50)
    GO
    INSERT INTO zips
    SELECT *
    FROM OPENROWSET(BULK 'C:Documents and SettingstkruegerMy Documentsblogcenzuszipcodeszips.txt',
    FORMATFILE='C:Documents and SettingstkruegerMy Documentsblogzip_format_file.txt'
    ) as t1 ;
    GO
    That was simple enough given the work on the format file that we already did.  Bulk insert isn’t as fast as bcp but gives you some freedom from within TSQL and SSMS to add functionality to the import.
    SSIS
    Next is my favorite playground in SSIS
    We can do many methods in SSIS to get data from point A, to point B.  I’ll show you data flow task and the SSIS version of BULK INSERT
    First create a new integrated services project.
    Create a new flat file connection by right clicking the connection managers area.  This will be used in both methods
    Bulk insert
    You can use format file here as well which is beneficial to moving methods around.  This essentially is calling the same processes with format file usage.  Drag over a bulk insert task and double click it to go into the editor.
    Fill in the information starting with connection.  This will populate much as the wizard did.
    Example of format file usage
    Or specify your own details
    Execute this and again, we have some data
    Data Flow method
    Bring over a data flow task and double click it to go into the data flow tab.
    Bring over a flat file source and SQL Server destination.  Edit the flat file source to use the connection manager “The file” we already created.  Connect the two once they are there
    Double click the SQL Server Destination task to open the editor.  Enter in the connection manager information and select the table to import into.
    Go into the mappings and connect the dots per say
    Typical issue of type conversions is Unicode to non-unicode.
    We fix this with a Data conversion or explicit conversion in the editor.  Data conversion tasks are usually the route I take.  Drag over a data conversation task and place it between the connection from the flat file source to the SQL Server destination.
    New look in the mappings
    And after execution…
    SqlBulkCopy Method
    Sense we’re in the SSIS package we can use that awesome “script task” to show SlqBulkCopy.  Not only fast but also handy for those really “unique” file formats we receive so often
    Bring over a script task into the control flow
    Double click the task and go to the script page.  Click the Design script to open up the code behind
    Ref.
    Ahsan Kabir Please remember to click Mark as Answer and Vote as Helpful on posts that help you. This can be beneficial to other community members reading the thread. http://www.aktechforum.blogspot.com/

  • How can I transfer a XML file content to a MS SQL database by stored procedure using LabWindows/CVI SQL Toolkit?

    Hi,
    I have a problem to transfer a XML file content to a MS SQL database by a given/fixed stored procedure. I'm able to transfer the content of the file by using following method ...
    hstmt = DBPrepareSQL (hdbc, EXEC usp_InsertReport '<Report> ..... </Report>');
    resCode = DBExecutePreparedSQL (hstmt);
    resCode = DBClosePreparedSQL (hstmt);
    ... but in this case I'm not able to fetch the return value of the stored procedure! 
    I have tried to follow the example of the stored procedure in the help documentation (DBPrepareSQL) but I miss a datatype for xml?!?
    Any idea how to solve my problem?
    KR Cake  
    Solved!
    Go to Solution.

    After some additional trials I found a solution by calling the stored procedure in this way
    DBSetAttributeDefault (hdbc, ATTR_DB_COMMAND_TYPE, DB_COMMAND_STORED_PROC);
    DBPrepareSQL (hdbc, "usp_InsertReport");
    DBCreateParamInt (hstmt, "", DB_PARAM_RETURN_VALUE, -1);
    DBCreateParamChar (hstmt, "XMLCONTENT", DB_PARAM_INPUT, sz_Buffer, (int) strlen(sz_Buffer) + 1 );
    DBExecutePreparedSQL (hstmt);
    DBClosePreparedSQL (hstmt);
    DBGetParamInt (hstmt, 1, &s32_TestId);
    where sz_Buffer is my xml file content and s32_TestID the return value of the stored procdure (usp_InsertReport(@XMLCONTENT XML))
    Now I face the problem, that DBCreateParamChar limits the buffer size to 8000 Bytes.
    Any idea to by-pass this shortage??

  • Cannot search file content on Word document with embedded Excel table

    Cannot search file content on Word document with embedded Excel table. I have Windows 8.1 64-bit and Office 2010 Professional. Only phrases from within Excel tables are not searchable. I have many Word documents with embedded Excel table.
    I use it for my invoices. Those invoices are converted to pdf to be sent via mail. Searching the same phrases in related pdf files Works fine. And yes, folders are indexed, searching service is active......... For example I can find all invoices that have
    specific address or name, which is located in word document, but cannot find invoices with specific item name or price, being that information is in embedded Excel table. (not linked, embedded). I thought that is a question for Windows forum, but guys directed
    me here on Office forum. To clarify, I do not use Ctrl+F inside some document, but Windows Search in my folders. Probably the same happens in Office 2013.
    Thank you.

    Hi, I have a lot of Word documents (invoices, offers). Main part of those documents is embedded Excel file because it is easier to do mathematics in Excel than in Word. There are columns with description, unit price, quantity, taxes... Now, I need
    to find who bought HP switch 2530-24G last year. I open folder with last year invoices and search "2530". Cannot find any. But if that document was converted to pdf for mail, than I can find that phrase. Windows search does not work for content if the content
    is in embedded file.

  • Problem Loading Microsoft Sql Serer table data to flat file

    Hi Experts,
    i am trying to load data from SQL Server table to flat file but its errror out.
    I have selected Staging area different form Targert ( I am using SQL Server as my staging area)
    knowlegde modue used: IKM SQL to file Append
    I reciee the following errror
    ODI-1217: Session table to file (124001) fails with return code 7000.
    ODI-1226: Step table to file fails after 1 attempt(s).
    ODI-1240: Flow table to file fails while performing a Integration operation. This flow loads target table test.
    ODI-1227: Task table to file (Integration) fails on the source MICROSOFT_SQL_SERVER connection POS_XSTORE.
    Caused By: java.sql.SQLException: Could not read heading rows from file
         at com.sunopsis.jdbc.driver.file.FileResultSet.<init>(FileResultSet.java:164)
    Please help!!!
    Thanks,
    Prateek

    Have you defined the File Datastore correctly with appropriate delimiter and file properties.
    Although the example is for oracle to file , see if this helps you in any way - http://odiexperts.com/oracle-to-flat-file.

  • Help with creating a sql file that will capture any database table changes.

    We are in the process of creating DROP/Create tables, and using exp/imp data into the tables (the data is in flat files).
    Our client is bit curious to work with. They do the alterations to their database (change the layout, change the datatype, drops tables) without our knowing. This has created a hell lot of issues with us.
    Is there a way that we can create a sql script which can capture any table changes on the database, so that when the client trys to execute imp batch file, the sql file should first check to see if any changes are made. If made, then it should stop execution and give an error message.
    Any help/suggestions would be highly appreciable.
    Thanks,

    Just to clarify...
    1. DDL commands are like CREATE, DROP, ALTER. (These are different than DML commands - INSERT, UPDATE, DELETE).
    2. The DDL trigger is created at the database level, not on each table. You only need one DDL trigger.
    3. You can choose the DDL commands for which you want the trigger to fire (probably, you'll want CREATE, DROP, ALTER, at a minimum).
    4. The DDL trigger only fires when one of these DDL commands is run.
    Whether you have 50 tables or 50,000 tables is not significant to performance in this context.
    What's signficant is how often you'll be executing the DDL commands on which the trigger is set to fire and whether the DDL commands execute in acceptable time with the trigger in place.

  • How do i create a new table from a *.sql file in JSP

    <html>
    <%@ page language="java" import="java.sql.*" %>
    <%@ page errorPage="ExceptionHandler.jsp" %>
    <%
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    String dbUrl = "jdbc:mysql://localhost/test?user=root";
    Connection conn = DriverManager.getConnection(dbUrl);
    Statement stmt = conn.createStatement();
    stmt.executeUpdate("\\. addresses.sql");
    %>
    how would i create a table from the addresses.sql file?

    stmt.executeUpdate("\\. addresses.sql");This, of course, will not work.
    You might even execute it the same way you do from command line with some Runtime.exec() jugglery but I would suggest you to work with my first suggestion unless someone else came up with something better.

  • How to load a comma seprated text file which contain address in to sql server table using ssis package

    Hi,
    I want to load a file which is comma separated and contain address .Problem is that address its self comma seprated so how do I differenciate whether comma used for column seprator or it used in address.
    for eg.
    One person having address like
    "c/o AB corp,156 cross lane,USA"
    Thanks.....

    Hi SR_MCTS,
    Based on your description, you want to distinguish a comma is used for column separator or used in address column in a text file, then load the data from the text file to SQL Server table.
    As per my understanding, if you can replace the comma column separator to another delimiter like semicolon (;), just do it. Then we can select Semicolon {;} as Column delimiter for the Flat File Connection Manager. Or ensure all columns are enclosed in double
    quotes ("). Then we can set the double quotes (") as Text qualifier for the Flat File Connection Manager, and the commas will be loaded as part of the string fields.
    If you can't have that done, because computers don't know the context of the data, you would have to come up with some kind of rules that decides when a comma represents a delimiter, and when it is just part of the text. I think a custom script component
    would be necessary to pre-process the data, identify where a comma is part of an address, and then treat that as one field.
    Thanks,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

Maybe you are looking for

  • Appraisal in Training and event management

    Hallo Experts, In the ESS portal during appraisal of a certain BE, the Appraisal form does not appear. The Name of the Appraisal model appear on the portal but NOT the form itself where the user input data. (the criteria groups and criterions.) I am

  • Error -2147136192 after upgrading DeviceNet to 2.1

    I get Error -2147136192 - "You cannot open EM or IO in slave mode.  Solution use the MAC ID which is different form that of the interface to open IO or EM." after upgrading from the DeviceNet 1.6 drivers to the new 2.1 Drivers. I'm not really sure wh

  • Problem transforming some tiff into jpg

    Hi, my problem is I'm trying to convert a tiff image into jpg image, my code it's working for some files but not with all, i'm receiving a String represent the tiff file in hex base and transform into baytearray of jpg my code is the next if someone

  • New 21.5 iMac for Adobe Suite CS4?

    I am interested in the new Apple _iMac 21.5_ model with the _GPU 9400_ of nVidia (basic model). I want to know if the processor and the GPU are sufficient to work correctly with Photoshop CS4, Illustrator CS4, Flash CS4, Dreamweaver CS4, etc. Is this

  • Looking for the oracle equivalent of T-SQL 'SELECT TOP n'

    Hi, I'm looking for the Oracle equivalent of T-SQL 'SELECT TOP n' and can't find any. There is SAMPLE(n) function but it supposed to pick up random values and I'm not sure if it's possible to make it select top values. Please help 8-) Thanx